Pull to refresh
17
0
Антон @Bonio

PHP разработчик

Send message
Есть камеры в формате дверного глазка, установите такую и вопросов ни у кого возникать не будет.
Вот и 4 способ опубликовали. Marcus T тоже использовал ошибку в парсинге url.
Там же, вроде, нигде не написано, что не прислали. Может закроют уязвимость и способ выложат.
Это простой javascript, который добавляется к сайту (у меня с помощью greasemonkey) и модифицирует интерфейс. Я выше уже выкладывал скрипт для сворачивания панели меню. А ваша идея мне понравилась и я её у себя тоже решил реализовать.

Javascript
// ==UserScript==
// @name        Habrahabr HideMenu
// @namespace   habrahabr.ru
// @include     http://habrahabr.ru
// @version     1.2
// @grant       none
// ==/UserScript==


/* Настройки */
var leftstrip_width = 11; //Ширина полосы слева (в пикселях)
var leftstrip_leftmargin = 24; //Отступ текста от полосы (в пикселях)
var hide_delay = 400; //Задержка перед скрытием панели меню после увода с нее мыши (в милисекундах)
/* Настройки End */




var default_navbarwidth = parseInt($('#navbar').css('width')); //71
var default_innermarginleft = $('.inner').css('margin-left');
var hidenavtimer;
var dotsx = default_navbarwidth-leftstrip_width/2-2;

var styles = '<style>';
styles += '.nav_userlink{color:#000} .nav_userlink:hover{text-decoration:none;} .nav_karmablock{margin: -5px 0 15px 25px; font-family: Verdana,sans-serif;} .nav_karmablock .blk{display:inline-block; text-align:center; color:#bebebe; font-size:10px;} .nav_karmablock #karma_str, .nav_karmablock #rating_str{font-size:20px; line-height:19px;} '; //Блок кармы
styles += '#navbar_disabled_overlay{display:none;position:absolute;top:0;left:0;z-index:1000;width:100%;height:100%;background:#f2f2f2 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAQCAYAAAAxtt7zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNpi3LhxozEDA0MHEJ/18/OrYAQK7AZyXBggwJWJAQ2wAHEFkpY9jP///0dRgall06ZNQ8MWgAADAEP8KXrzifKgAAAAAElFTkSuQmCC) no-repeat;} ';
styles += '</style>';
$('body').prepend(styles); //Вставляем стиль на страницу

function HideLeftMenu() {
    $("#navbar_disabled_overlay").show();
    $('#navbar').css('left',parseInt(leftstrip_width-default_navbarwidth)+'px');
}

function ShowLeftMenu() {
    $("#navbar_disabled_overlay").hide();
    $('#navbar').css('left','0');
}

$('#navbar').css('transition','left 0.1s ease').append('<div id="navbar_disabled_overlay"><div style="position:absolute;top:0;left:0;width:100%;height:71px;background:#a0c2ce;"></div></div>');
$('#navbar_disabled_overlay').css('background-position', dotsx+'px center');
$('.inner').css('margin-left', parseInt(leftstrip_width+leftstrip_leftmargin)+'px');
HideLeftMenu(); //Скрываем меню

//При наведении на полосу слева
$('#navbar_disabled_overlay').mouseenter(function(){
      ShowLeftMenu(); //Показываем меню
});

//При уводе мыши с панели меню
$('#navbar').mouseleave(function(){
    if($('#navbar_overlay').is(":hidden")) { //только если не раскрыто подменю
        hidenavtimer = setTimeout( function() { //Взводим таймер, для того, чтобы меню скрылось не сразу а с задержкой
           HideLeftMenu(); //Скрываем меню
        } , hide_delay);
    }
});

//При клике на затемненном оверлее (при открытом подменю)
$('#navbar_overlay').click(function(){
    HideLeftMenu(); //Скрываем меню
});

//При наведении на панель меню, сбрасываем таймер
$('#navbar').mouseenter(function(){
      clearTimeout(hidenavtimer);
});



if(user_type == 'habrauser') {

    var nav_karma, nav_rating;

    //Обращаемся к habraAPI для получения кармы
    $.get('http://habrahabr.ru/api/profile/'+username+'/', function(result) {

        $xml = $($.parseXML(result));

        nav_karma = $xml.find('karma').text();
        nav_rating = $xml.find('rating').text();

        nav_karma = parseFloat(nav_karma).toFixed(1);
        nav_rating = parseFloat(nav_rating).toFixed(1);

        //Выводим значения кармы
        $('#navbar #karma_str').html(nav_karma);
        $('#navbar #rating_str').html(nav_rating);

    });


    var carmablock_html = '<div class="blk" style="margin-right: 12px;">Карма<div style="color:#6c6;" id="karma_str">--</div></div><div class="blk">рейтинг<div style="color:#c6c;" id="rating_str">--</div></div>';

    $('#navbar #user_tab .title').html('<a class="nav_userlink" href="/users/'+username.toLowerCase()+'/">'+username+'</a>').after('<div class="nav_karmablock">'+carmablock_html+'</div>');


}




Если интересно, выложу код.

Добавил анимацию, чтоб менюшка плавненько выезжала.



Javascript
// ==UserScript==
// @name        Habrahabr HideMenu
// @namespace   habrahabr.ru
// @include     http://habrahabr.ru
// @version     1.1
// @grant       none
// ==/UserScript==


/* Настройки */
var leftstrip_width = 11; //Ширина полосы слева (в пикселях)
var leftstrip_leftmargin = 24; //Отступ текста от полосы (в пикселях)
var hide_delay = 400; //Задержка перед скрытием панели меню после увода с нее мыши (в милисекундах)
var moveinner = false; //Отодвигать ли текст при раскрытии меню
/* Настройки End */

var default_navbarwidth = parseInt($('#navbar').css('width')); //71
var default_innermarginleft = $('.inner').css('margin-left');
var hidenavtimer;
var dotsx = default_navbarwidth-leftstrip_width/2-2;

function HideLeftMenu() {
    $("#navbar_disabled_overlay").show();
    if(moveinner) $('.inner').css('margin-left', parseInt(leftstrip_width+leftstrip_leftmargin)+'px');
    $('#navbar').css('left',parseInt(leftstrip_width-default_navbarwidth)+'px');
}

function ShowLeftMenu() {
    $("#navbar_disabled_overlay").hide();
    if(moveinner) $('.inner').css('margin-left', default_innermarginleft);
    $('#navbar').css('left','0');
}

$('#navbar').css('transition','left 0.1s ease');
$('#navbar').append('<div id="navbar_disabled_overlay" style="display:none;position:absolute;top:0;left:0;z-index:1000;width:100%;height:100%;background:#f2f2f2 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAQCAYAAAAxtt7zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNpi3LhxozEDA0MHEJ/18/OrYAQK7AZyXBggwJWJAQ2wAHEFkpY9jP///0dRgall06ZNQ8MWgAADAEP8KXrzifKgAAAAAElFTkSuQmCC) no-repeat '+dotsx+'px center;"><div style="position:absolute;top:0;left:0;width:100%;height:71px;background:#a0c2ce;"></div></div>');
$('.inner').css('margin-left', parseInt(leftstrip_width+leftstrip_leftmargin)+'px');
HideLeftMenu(); //Скрываем меню

//При наведении на полосу слева
$('#navbar_disabled_overlay').mouseenter(function(){
      ShowLeftMenu(); //Показываем меню
});

//При уводе мыши с панели меню
$('#navbar').mouseleave(function(){
    if($('#navbar_overlay').is(":hidden")) { //только если не раскрыто подменю
        hidenavtimer = setTimeout( function() { //Взводим таймер, для того, чтобы меню скрылось не сразу а с задержкой
           HideLeftMenu(); //Скрываем меню
        } , hide_delay);
    }
});

//При клике на затемненном оверлее (при открытом подменю)
$('#navbar_overlay').click(function(){
    HideLeftMenu(); //Скрываем меню
});

//При наведении на панель меню, сбрасываем таймер
$('#navbar').mouseenter(function(){
      clearTimeout(hidenavtimer);
});


В Firefox, чтобы выделить текст в ссылке, надо зажать Alt и далее выделять как обычно.
Тьфу, и комментарий уже не поправить( вот правильный код:
Код
/* Настройки */
var leftstrip_width = 11; //Ширина полосы слева (в пикселях)
var leftstrip_leftmargin = 24; //Отступ текста от полосы (в пикселях)
var hide_delay = 350; //Задержка перед скрытием панели меню после увода с нее мыши (в милисекундах)
var moveinner = false; //Отодвигать ли текст при раскрытии меню
/* Настройки End */


var default_navbarwidth = parseInt($('#navbar').css('width')); //71
var default_innermarginleft = $('.inner').css('margin-left');
var hidenavtimer;
var dotsx = default_navbarwidth-leftstrip_width/2-2;


function HideLeftMenu() {
    $("#navbar_disabled_overlay").show();
    $('.inner').attr('style', 'margin-left:'+parseInt(leftstrip_width+leftstrip_leftmargin)+'px;');
    $('#navbar').css('left',parseInt(leftstrip_width-default_navbarwidth)+'px');
}

function ShowLeftMenu() {
    $("#navbar_disabled_overlay").hide();
    if(moveinner) $('.inner').attr('style', 'margin-left:'+default_innermarginleft+';');
    $('#navbar').css('left','0');
}


$('#navbar').append('<div id="navbar_disabled_overlay" style="display:none;position:absolute;top:0;left:0;z-index:1000;width:100%;height:100%;background:#f2f2f2 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAQCAYAAAAxtt7zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNpi3LhxozEDA0MHEJ/18/OrYAQK7AZyXBggwJWJAQ2wAHEFkpY9jP///0dRgall06ZNQ8MWgAADAEP8KXrzifKgAAAAAElFTkSuQmCC) no-repeat '+dotsx+'px center;"><div style="position:absolute;top:0;left:0;width:100%;height:71px;background:#a0c2ce;"></div></div>');
HideLeftMenu(); //Скрываем меню


//При наведении на полосу слева
$('#navbar_disabled_overlay').mouseenter(function(){
      ShowLeftMenu(); //Показываем меню
});

//При уводе мыши с панели меню
$('#navbar').mouseleave(function(){
    if($('#navbar_overlay').is(":hidden")) { //только если не раскрыто подменю
        hidenavtimer = setTimeout( function() { //Взводим таймер, для того, чтобы меню скрылось не сразу а с задержкой
           HideLeftMenu(); //Скрываем меню
        } , hide_delay);
    }
});

//При клике на затемненном оверлее (при открытом подменю)
$('#navbar_overlay').click(function(){
    HideLeftMenu(); //Скрываем меню
});

//При наведении на панель меню, сбрасываем таймер
$('#navbar').mouseenter(function(){
      clearTimeout(hidenavtimer);
});


Вот написал юзерскрипт, который скрывает это меню с глаз долой, а оставляет заместо него узкую полосу, при наведении на которую раскрывается уже само меню. При уводе мыши с меню или по клику на полупрозрачный оверлей в подменю, меню опять скрывается.
Скрипт можно установить например с помощью greasemonkey для firefox.
Имеется четыре настраиваемых параметра:
leftstrip_width — ширина полосы слева (в пикселях).
leftstrip_leftmargin — отступ текста от полосы (в пикселях)
hide_delay — задержка перед скрытием панели меню после увода с нее мыши (в милисекундах)
moveinner — отодвигать ли текст при раскрытии меню. По умолчанию flase, меню при этом при раскрытии накладывается поверх текста. При true будет выглядеть так.

Скриншоты
image

image

Код
/* Настройки */
var leftstrip_width = 11; //Ширина полосы слева (в пикселях)
var leftstrip_leftmargin = 24; //Отступ текста от полосы (в пикселях)
var hide_delay = 350; //Задержка перед скрытием панели меню после увода с нее мыши (в милисекундах)
/* Настройки End */


var default_navbarwidth = parseInt($('#navbar').css('width')); //71
var default_innermarginleft = $('.inner').css('margin-left');
var hidenavtimer;
var dotsx = default_navbarwidth-leftstrip_width/2-2;


function HideLeftMenu() {
    $("#navbar_disabled_overlay").show();
    $('.inner').attr('style', 'margin-left:'+parseInt(leftstrip_width+leftstrip_leftmargin)+'px;');
    $('#navbar').css('left',parseInt(leftstrip_width-default_navbarwidth)+'px');
}

function ShowLeftMenu() {
    $("#navbar_disabled_overlay").hide();
    $('.inner').attr('style', 'margin-left:'+default_innermarginleft+';');
    $('#navbar').css('left','0');
}


$('#navbar').append('<div id="navbar_disabled_overlay" style="display:none;position:absolute;top:0;left:0;z-index:1000;width:100%;height:100%;background:#f2f2f2 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAQCAYAAAAxtt7zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNpi3LhxozEDA0MHEJ/18/OrYAQK7AZyXBggwJWJAQ2wAHEFkpY9jP///0dRgall06ZNQ8MWgAADAEP8KXrzifKgAAAAAElFTkSuQmCC) no-repeat '+dotsx+'px center;"><div style="position:absolute;top:0;left:0;width:100%;height:71px;background:#a0c2ce;"></div></div>');
HideLeftMenu(); //Скрываем меню


//При наведении на полосу слева
$('#navbar_disabled_overlay').mouseenter(function(){
      ShowLeftMenu(); //Показываем меню
});

//При уводе мыши с панели меню
$('#navbar').mouseleave(function(){
    if($('#navbar_overlay').is(":hidden")) { //только если не раскрыто подменю
        hidenavtimer = setTimeout( function() { //Взводим таймер, для того, чтобы меню скрылось не сразу а с задержкой
           HideLeftMenu(); //Скрываем меню
        } , hide_delay);
    }
});

//При клике на затемненном оверлее (при открытом подменю)
$('#navbar_overlay').click(function(){
    HideLeftMenu(); //Скрываем меню
});

//При наведении на панель меню, сбрасываем таймер
$('#navbar').mouseenter(function(){
      clearTimeout(hidenavtimer);
});


У меня такой эффект бывает при прослушивании некоторой trance музыки, натурально мурашки по коже начинают бегать, а громкость хочется выкрутить на максимум.
На тостере этот дизайн нормально смотрится, а тут как то совсем не в тему. Сверху страницу как обрубили и эта мозолящая глаз полоса сбоку. Ненавижу редизайны и всякие «улучшения».
С каждым новым обновлением развивается уже какая то паническая боязнь перед ними, уже заранее думаешь: «что упростили донельзя на этот раз, какой элемент интерфейса упразднили в этот раз?»
Хорошо, что есть Classic Theme Restorer. Плагином Status-4-Evar пользуюсь уже с давних пор, с тех пор как упразднили статусбар.

В 29 версии поломался плагин переводчика Lingualeo.
А что обычно используют в качестве VID номера? Ведь по идее право использования конкретного номера нужно покупать.
При использовании таких вещей как usb-uart мосты и даже V-USB библиотеки, VID и PID номера уже есть, а что делать в вашем случае? Может для любительских поделок выделен какой то диапазон номеров?
А разве HDMI это не тот же DVI, только с другим разъемом?
Прямо сейчас трансляция идет тут. Грузовик в ста метрах от МКС. Примерно на 15:14 по московскому времени запланирован захват грузовика манипулятором.
Всегда с интересом смотрю их трансляции. Стыковка с МКС запланирована на завтра (20 апреля).
Интересно, будет ли где нибудь трансляция стыковки?
Скриншот напомнил игру KLAD, в которую я играл ещё на ПК «Корвет».
Привет, народ. Мне для одного проекта потребовалось прикрутить эту базу, но ВСЕ НАЗВАНИЯ КАПСОМ!
Делюсь функцией на php, которая принимает строку (хоть капсом, хоть как) и делает каждое слово с большой буквы, кроме слов исключений, типа «район», «область» и т.д.
Особенности: первая буква слова в скобках тоже будет увеличена, слова могут быть разделены пробелом или тире.

Примеры работы, первая строка до обработки, вторая после обработки
  • МОСКОВСКАЯ ОБЛАСТЬ, ОДИНЦОВО
  • Московская область, Одинцово

  • САРАТОВСКАЯ ОБЛАСТЬ, КРАСНОАРМЕЙСКИЙ РАЙОН, САДОВОЕ
  • Саратовская область, Красноармейский район, Садовое

  • ТЮМЕНСКАЯ ОБЛАСТЬ, ХАНТЫ-МАНСИЙСКИЙ-ЮГРА АВТОНОМНЫЙ ОКРУГ
  • Тюменская область, Ханты-Мансийский-Югра автономный округ

  • САХА (ЯКУТИЯ) РЕСПУБЛИКА, ЯКУТСК
  • Саха (Якутия) Республика, Якутск

Код
/* 
Функция предназначена для нормализации написания названий населенных пунктов из базы индексов Почты России,
http://info.russianpost.ru/database/ops.html
Функция возвращает строку, где каждое слово пишется с большой буквы, кроме слов исключений
Пример:
МОСКОВСКАЯ ОБЛАСТЬ, ОДИНЦОВО -> Московская область, Одинцово
САРАТОВСКАЯ ОБЛАСТЬ, КРАСНОАРМЕЙСКИЙ РАЙОН, САДОВОЕ -> Саратовская область, Красноармейский район, Садовое
ТЮМЕНСКАЯ ОБЛАСТЬ, ХАНТЫ-МАНСИЙСКИЙ-ЮГРА АВТОНОМНЫЙ ОКРУГ -> Тюменская область, Ханты-Мансийский-Югра автономный округ
САХА (ЯКУТИЯ) РЕСПУБЛИКА, ЯКУТСК -> Саха (Якутия) Республика, Якутск
*/
function RussianPost_NormalizeWords($string, $encoding='utf-8') {
	//Слова исключения, они не будут написаны с большой буквы
	$exceptions = array('автономный','автономная','округ','район','область','край','немецкий','национальный');

	$string = mb_strtolower(trim($string), $encoding); //перевод всех букв в нижний регистр
	$word = preg_split('/[\s-]+/', $string, -1, PREG_SPLIT_OFFSET_CAPTURE); //Разделяем строку на отдельные слова (разделители: пробел, тире)

	$resultstring = ''; //Результирующая строка
	for($i=0; $i<count($word); $i++) {

		$substr = $word[$i][0]; //Отдельное слово из строки

		$substr_nothooks = str_replace(array(')','(',',','.'),'',$substr); //Удаляем скобки, запятые, точки (для проверки слова на исключение)
		if(!in_array($substr_nothooks, $exceptions)) { //Если слова нет в исключениях, 
			$offset1 = ($substr[0]=='(') ? 2 : 1; //Смещение первой буквы, нужно для того, чтобы правило применялось к словам в скобках
			$first = mb_substr($substr, 0, $offset1, $encoding); //первая буква
			$rest  = mb_substr($substr, $offset1, mb_strlen($substr, $encoding), $encoding); //все кроме первой буквы 
			$first = mb_strtoupper($first, $encoding); //Переводим первую букву в верхний регистр
			$substr = $first.$rest;
		}

		$splitter = (isset($word[$i+1])) ? substr($string, $word[$i+1][1]-1, 1) : ''; //Определяем разделитель между словами (пробел или тире)
		$resultstring .= $substr.$splitter; //Склеиваем строку из отдельных слов, устанавливаем разделители между словами (пробел или тире)
	}
	return $resultstring; //Возвращаем строку.
}

Красивый прибор, интересная идея.
От чего он питается? На фотографиях не видно проводов, там аккумулятор?
Какое примерно суммарное потребление тока у такого экранчика?
Не всегда светятся. Бывает просто пластиковая нашлепка. Я когда первый раз увидел, тоже подумал, что скиммер.

Information

Rating
Does not participate
Location
Россия
Registered
Activity