Category: WebDev

0

рабоче-софто-мультимониторное

На рабо­те 2 мони­то­ра, впер­вые вооб­ще попро­бо­вал про­грам­ми­ро­вать на двух мони­то­рах — чер­тов­ски удоб­но) но при этом есть и пара недо­стат­ков, кото­рые со вре­ме­нем уда­лось устранить:

1) отсутствие панели задач на втором мониторе

с учё­том того, что обыч­но откры­та куча про­грамм, часто не хочет­ся искать где, что и на каком мони­то­ре нахо­дит­ся. ну и быст­рый запуск, воз­мож­но даже трей, пуск и часы не поме­ша­ли бы =)
поста­вил UltraMon, вопрос решён — пустая панель задач на вто­ром мони­то­ре + кноп­ки в заго­лов­ке для отправ­ки окна на дру­гой мони­тор и рас­тя­ги­ва­ние окна на все мони­ки сразу.
при­сут­ству­ет еще ряд фич, вро­де хот­ке­ев, но лич­но мне там мало что интересно.

есть еще DisplayFusion. тоже плат­ная, но это уже целый ком­байн, думаю пере­сесть на неё. есть бес­плат­ная вер­сия, но силь­но уж уре­за­ная, мне функ­ци­о­на­ла фри вер­сии недостаточно.
UPD:
есть еще опен­сорс­ная Dual Monitor Taskbar, и еще один ком­байн — Actual Multiple Monitors, плат­ная и бес­плат­ные версии.

2) фокус

в про­цес­се пере­клю­че­ния взгля­да с одно­го мони­то­ра на дру­гой, да и в ряде дру­гих слу­ча­ев, маши­наль­но пыта­юсь скрол­лить коле­сом мыш­ки что-либо, а при этом фокус нахо­дит­ся на дру­гом окне в дру­гом мони­то­ре, и соот­вет­ствен­но ника­ко­го скрол­ла не про­ис­хо­дит. при­хо­дит­ся лиш­ний раз щёл­кать, ино­гда достаёт.

мож­но конеч­но вклю­чить т.н. режим ‘X‑Mouse‘, но имхо ска­чу­щий за мыш­кой фокус — это удо­воль­ствие на люби­те­ля. про­бо­вал так­же после­до­вать сове­там из сбор­ни­ка, с подр­кру­чи­ва­ним пара­мет­ра UserPreferencesMask — моей про­бле­мы это не решило.

реши­ла мою про­бле­му кро­хот­ная про­грамм­ка от немец­ко­го про­из­во­ди­те­ля, у кото­ро­го всё ОК :) — AlwaysMouseWheel. экзеш­ник в 50Кб и ника­ких про­блем. у них есть еще соф­ти­на, сохра­ня­ю­щая поло­же­ние ико­нок на деск­то­пе — DesktopOK

в плане муль­ти­мо­ни­тор­но­сти жало­вать­ся теперь не на что.

жалу­юсь вот на что — не хва­та­ет плю­шек для диа­ло­гов открытия/сохранения, для быст­рой нави­га­ции по пап­кам (пом­ню, в своё вре­мя на 98/ME для это­го была Quick Folders v1.0.1, потом из кучи ана­ло­гов под XP выбрал Dialog Box Assistant, ниче­го удоб­нее не видел, жаль, её раз­ра­бот­ка оста­но­ви­лась). под семёр­кой эти две уже неак­ту­аль­ны, более-менее из всех подоб­ных рабо­чих — Listary, но это уже совсем не то…

так же херо­ва­стень­ко с мон­ти­ро­ва­ни­ем уда­лён­ной фай­ло­вой систе­мы по SSH. да, есть Dokan SSHFS, есть Cyberduck. я оста­но­вил­ся на ExpanDrive. он и мон­ти­ру­ет всё в тихом режи­ме при стар­те систе­мы и не глю­чит, отно­си­тель­но шуст­ро работает.

как-то так ;)

0

удаление ajax навигации вконтакте

Не пой­му, то ли у меня оно с вкопт’ом кон­флик­ту­ет, то ли еще с чем..
Так или ина­че, мне этот функ­ци­о­нал не нужен в любом виде. Вот, наки­дал UserJS скрипт для этого:

// ==UserScript==
// @name	remove vkontakte ajax navigation
// @author	1allen (1all3n@gmail.com)
// @namespace	https://walk-alone.ru
// @include	*vkontakte.ru*
// @include	*vk.com*
// ==/UserScript==
//
 
(function () {
 
	function vk_fix_links()
	{
		var lnks = document.getElementsByTagName('a');
        var i, lnk;
        for ( i=0; i<lnks.length; i++ )
        {
            lnk = lnks[i].onclick;
            if ( !!lnk && lnk.toString().indexOf('nav.go',0) != -1)
                lnks[i].onclick = null;
        }
	}
 
	document.addEventListener('DOMContentLoaded', vk_fix_links, false);
})();

Тестил толь­ко в Опере.
Пола­гаю, впе­ре­ди еще рефак­то­ринг) Так то!)

0

String format (JavaScript)

String.prototype.format = function() {
    var a = arguments;
    return this.replace(/\{\d+\}/g, function(c){
        return a[c.match(/\d+/)];
    });
}
 
// usage:
var str = 'Hello, {0}! You are {1}!';
str.format('friend', 'awesome');
// Hello, friend! You are awesome!

P.S.: Вот как-то так :D

0

file size (M, K, G, T) to bytes (PHP)

function bytes($s) {
 $units = 'KMGT';
 return pow(1024, strpos($units, strpbrk($s, $units)) + 1) * (int) $s;
}
 
// usage:
echo bytes('1K'); // 1024
echo bytes('1M'); // 1048576