Ей това са всички необходими неща за монтаж на PVC корниз Gardinia – корниз, бленда (продава се отделно на метър), присъединители за свързване на два корниза, кукички с кръгли плъзгачи, тапи за закриване на дупките за дюбелите, стопери. Преди съм монтирал и двуканалния алуминиев корниз на Gardinia, но и пластмасовия е с добро качество, а и го има по всички големи строителни хипермаркети. За този закупих бяла бленда на цена около 5лв/m.
Author Archives: Недялко Войняговски
PDFTk Gui – join, rotate and extract pdf files
Simple GUI for pdftk. It can be used only for join, rotate and extract PDF-files. Nothing more. App requires .NET Framework 4.0+. C# source code available as project and can be compiled with SharpDevelop. The reason I wrote this tool is because I couldn’t find an open source GUI that supports the latest versions of pdftk.

Download: PDFTk_Gui-v.1.01-by_Ned.zip
Source code: PDFTk_Gui-v.1.01-SharpDevelop_project.zip
Blender 3D to 2d DXF
Small Python script witch can make 2d from selected 3D objects in Blender. Useful for furniture. For 2D I use qCad (free version).
import bpy, os
# get the current selection
selection = bpy.context.selected_objects
# initialize a blank result variable
element_width = "-x"
element_height = "z"
list_dims = []
# Put Origin to middle
#bpy.ops.object.origin_set( type = 'ORIGIN_GEOMETRY' )
bpy.ops.object.transform_apply(location=True, rotation=True, scale=True)
bpy.ops.object.origin_set(type='ORIGIN_CENTER_OF_VOLUME', center='MEDIAN')
# iterate through the selected objects
for sel in selection:
    # get the current object's dimensions
    dims = sel.dimensions
    
    # fix dimensions
    a = dims.x*1000
    b = dims.y*1000
    c = dims.z*1000
    
    # fix locations
    lcx = sel.location.x*1000
    lcy = sel.location.y*1000
    lcz = sel.location.z*1000
    
    w = 0
    h = 0
    
    lx = 0
    ly = 0
    x_and_width = {
    	# w, lx
    	"x": [round(a, 1), round(lcx - a/2, 3)],
    	"y": [round(b, 1), round(lcy - b/2, 3)],
    	"z": [round(c, 1), round(lcz - c/2, 3)],
    	"-x": [round(a, 1), round(-(lcx) - a/2, 3)],
    	"-y": [round(b, 1), round(-(lcy) - b/2, 3)],
    	"-z": [round(c, 1), round(-(lcz) - c/2, 3)]
    }
    y_and_height = {
    	"x": [round(a, 1), round(lcx - a/2, 3)],
    	"y": [round(b, 1), round(lcy - b/2, 3)],
    	"z": [round(c, 1), round(lcz - c/2, 3)],
    	"-x": [round(a, 1), round(-(lcx) - a/2, 3)],
    	"-y": [round(b, 1), round(-(lcy) - b/2, 3)],
    	"-z": [round(c, 1), round(-(lcz) - c/2, 3)]
    }
    celX = x_and_width[element_width]
    celY = y_and_height[element_height]
    list_dims.append( [ celX[0], celY[0], celX[1], celY[1] ] )
print("");
prnt_rect_funct = """
function rect(x, z, m){
    var doc = getDocument();
    var pList = [new RVector(0,0), new RVector(x,0), new RVector(x,z), new RVector(0,z)];
    var poly = new RPolyline(pList, true);
    var polyData = new RPolylineData(poly);
    var n = new RPolylineEntity(doc, polyData);
    addEntity(n);
    move(n, m);
}
"""
print(prnt_rect_funct)
for x in list_dims:
    print("rect(", x[0], ", ", x[1], ",", "[", x[2], ", ", x[3], "])")
Мисловна карта (MindMap) за изграждане на кухненски шкаф
От скоро чета книгите на Тони Бюзан, който изучава човешкия мозък и предлага практични решения за сложни задачи. и реших да се заиграя с FreeMind, като създам мисловна карта на нещо сравнително просто, като изграждане на долен кухненски шкаф. Включих всички материали, инструменти и дейности, които са необходими за подобен шкаф. Получи се нещо, което ме изненада и за това го шервам. Техниките на Тони Бюзан и изграждането на мисловни карти са наистина полезни в почти всяко начинание в човешката дейност.

Прилагам FreeMind сорс файла на картата: Kuhnenski_shkaf-dolen-MindMap-FreeMind.zip
evoc – English vocabulary quiz
Пуснах една система за учене на думи на английски. Системата е базирана на тестове. Все още е в процес на девелопинг, но може да се ползва. За превода на думите написах скрапер, за да автоматизирам процеса и някои думи са малко машинно преведени, то в момента има само два базови речника и три fast quiz теста за 20, 50 и100 думи. Добавих опция да се предлагат корекции на думите, които да одобрявам в админ панел. Може да се ползва от тук:
Excel split string function
Simple VBA function to split strings into words (or strings):
Function TxtSplit(rngCell As Range, delim As String, nr As Long) As String
    Dim str As String
    Dim arr As Variant
    str = Trim(rngCell.Value)
    arr = Split(str, delim)
    TxtSplit = Trim(arr(nr - 1))
End FunctionSample usage:
=TxtSplit(B2;", ";1)PHP Composer – some commands and tricks
Directory structure:
|   composer.json
|   composer.phar
|   index.php
|
+---app
|   +---controller
|   |       Home.php
|   |
|   \---model
|           FirstDb.php
|
\---vendor
    |   autoload.php
    |
    \---composer
            autoload_classmap.php
            autoload_namespaces.php
            autoload_psr4.php
            autoload_real.php
            autoload_static.php
            ClassLoader.php
            LICENSE1. Standard case – with namespaces
root/composer.json
{
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    }
}root/app/controller/Home.php
<?php
namespace App\Controller;
class Home{
	public function index(){
		echo "Hello from Home->Index!";
	}
}root/app/model/FirstDb.php
<?php
namespace App\Model;
class FirstDb{
	public function db(){
		echo "Hi from first DB";
	}
}root/index.php
<?php 
use App\Controller\Home;
use App\Model\FirstDb;
require_once __DIR__ . '/vendor/autoload.php';
$h = new Home();
$fdb = new FirstDb();
echo $h->index()."\n";
$fdb->db();2. Without namespaces
root/composer.json
{
    "autoload": {
        "psr-4": {"": ["app/controller", "app/model"]}
    }
}root/app/controller/Home.php
<?php
class Home{
	public function index(){
		echo "Hello from Home->Index!";
	}
}root/app/model/FirstDb.php
<?php
class FirstDb{
	public function db(){
		echo "Hi from first DB";
	}
}root/index.php
<?php 
require_once __DIR__ . '/vendor/autoload.php';
$h = new Home();
$fdb = new FirstDb();
echo $h->index();
$fdb->db();3. Mix usage
root/composer.json
{
    "autoload": {
        "psr-4": {
            "": "app/"
        }
    }
}root/app/controller/Home.php
<?php
namespace controller;
class Home{
	public function index(){
		echo "Hello from Home->Index!";
	}
}root/app/model/FirstDb.php
<?php
namespace model;
class FirstDb{
	public function db(){
		echo "Hi from first DB";
	}
}root/index.php
<?php 
require_once __DIR__ . '/vendor/autoload.php';
$h = new controller\Home();
$fdb = new model\FirstDb();
echo $h->index();
$fdb->db();4. Composer addPsr4() without cnahge composer.json – dynamically add classes
root/composer.json
{
    "name": "some/test",
    "require": {}
}root/app/controller/Home.php
<?php
namespace App\Controller;
class Home{
	public function index(){
		echo "Hello from Home->Index!";
	}
}root/app/model/FirstDb.php
<?php
namespace App\Model;
class FirstDb{
	public function db(){
		echo "Hi from first DB";
	}
}root/index.php
<?php 
use App\Controller\Home;
use App\Model\FirstDb;
$loader = require __DIR__ . '/vendor/autoload.php';
$loader->addPsr4('App\\', 'app/');
$h = new Home();
$fdb = new FirstDb();
echo $h->index()."\n";
$fdb->db();5.Some important commands
Some important commands:
To initially install the defined dependencies:
php composer.phar update
to make sure the vendor directory is up in sync with your composer.lock file
php composer.phar install
To update to the latest versions
php composer.phar update
After adding the autoload field, you have to re-run this command:
php composer.phar dump-autoload
php composer.phar dump
calls composer dump-autoload.
how to create a composer.json by hand
php composer.phar init
To list all of the available packages
php composer.phar show
It will replace your composer.phar with the latest version:
php composer.phar self-update
all directories or files to search for classes:
{
    "autoload": {
        "classmap": ["src/", "lib/", "Something.php"]
    }
}
Wildcards (*) are also supported in a classmap paths, and expand to match any directory name:
{
    "autoload": {
        "classmap": ["src/addons/*/lib/", "3rd-party/*", "Something.php"]
    }
}
if your package includes PHP functions that cannot be autoloaded by PHP:
{
    "autoload": {
        "files": ["src/MyLibrary/functions.php"]
    }
}
HELP
=========================
to see the complete list of commands
composer list
--help combined with any of those can give you more information
					Windows 11 fix for slow shutdown and boot
I use this commands to fix slow shutdown on Windows 11.
Open cmd.exe with Run as Administrator and exec:
DISM.exe /Online /Cleanup-image /StartComponentCleanupDISM.exe /Online /Cleanup-Image /RestorehealthSFC /SCANNOWОптимизиране рязането на линейни детайли
Написах едно тулче за калкулиране на оптимално рязане на линейни детайли. Писано е на JavaScript за браузер, защото така ми е най-бързо и удобно. При повече от 22 детайла вероятно ще започне да лагва, защото възможните комбинации стават безкрайни, а всичко го тъпча в масиви. Ако ми остане време, ще го портна до C или C#.
И един пример, как се ползва. В момента си правя стелаж за обувки и искам да знам, колко стоманени профила да си купя и как да разпределя срезовете, за да имам най-малък отпадък. Ей това е проекта:
За да разположа оптимално детайлите по профили с дължина 2 метра въвеждам парчетата в тула:

Резултатите ми показват, че ще ми трябват общо 4 парчета метален профил, като най-големия ми остатък е 1.034m.
Тула е събран в един HTML файл.
Може да се изтегли от тук: Изтегли
Или да се ползва от тук: Демо
Прихващане на Nova Live stream
В това видео ще покажа, как се взима ръчно файла с live stream на Нова ТВ. Има лека разлика спрямо прихващането на bTV стрийма, защото нова ползва iframe на външна страница.
Използвани инструменти:
firefox
wget (for windows)
pup html parser
ffplay (идва стандартно с ffmpeg)
 
								



