• Как отучить стажёра от говнокода?

    taliban
    @taliban
    php программист
    «Первые дня два, он внимательно слушал и спрашивал. Показал ему, что такое HTML, CSS, PHP, MySQL.» О.о Дайте ему штуки три книги, две недели времени и пусть сидит дома читает, через две недели проверьке как в школе что он прочитал, и если все читал исправно дальше работайте с ним, это Ваше «обучение» выйдет боком!
    Ответ написан
    5 комментариев
  • JQuery - postfix использование?

    Riateche
    @Riateche
    Вы хотите чего-то очень странного и неправильного, но всё же:
    Object.prototype.__defineGetter__('$', function() { return jQuery(this);})

    Работает не везде (проверил в Chrome, по идее еще должно работать в Firefox).
    После этого сломается глобальная функция $() (останется jQuery()).
    Ответ написан
    1 комментарий
  • PHP+MySQL для гуманитария?

    @totosarg
    Проверял? Проверял. Работает? Работает. Не трогай!
    Ответ написан
    Комментировать
  • Как объяснить программисту принцип единой ответственности?

    Shedal
    @Shedal
    Нужно объяснять на примерах. Покажите, почему деление на слои хорошо, чем оно удобно, — на конкретном примере. Покажите, насколько удобнее тестировать отдельные классы, в которые можно сделать dependency injection стаба или мока. Да куча примеров есть, вот на них и показывайте, желательно применительно к вашему конкретному случаю.

    Людям намного проще сначала понимать конкретные вещи а уже потом через них осознавать более абстрактные принципы.
    Ответ написан
    2 комментария
  • Чего бы понаписать?

    Напишите клиппер для Evernote в виде расширения для Opera. А то сейчас есть только универсальный букмарклет, но он давно не обновлялся. И опыт получите и возможность поучаствовать в конкурсе от Evernote…
    Ответ написан
    1 комментарий
  • Помогите подобрать стол для компьютера

    @lesha_penguin
    Расскажу как я сам для себя решал проблему организации рабочего места. Просто опишу критерии по которым я огранизовывал себе рабочее место и какие шаги я делал для реализации этих критериев.

    Первый критерий: Максимальная эффективная площадь использования рабочего стола.
    Не максимальная площадь, а максимальное эффективное использование площади. Т.е. сидя за столом, рука должна дотягиваться в идеальном случае до любого места. Слишком «глубокая» столешница в этом плане вовсе не так здорово, как кажется на первый взгляд. У меня уже были столы у которых «неиспользуемая глубина» превращала их в хламо-пылесборник.

    Второй критерий: Мониторы лучше поднять с уровня стола на уровень глаз.
    Шея при этом меньше искривляется, взгляд меньше устает. Таких штатных столов, к сожалению, просто нет. Но я просто купил два специальных кронштейна-крепления, которые поднимали мониторы, подвешивая их над поверхностью стола (кстати, поворотные). Как приятный побочный эффект — активная площадь стола увеличивается, поскольку мониторы подвешенны над столом, да и пространство стола за мониторами не покрывается вековой пылью.

    Третий критерий: Есть то, что ты используешь постоянно, есть то, что время от времени, а есть то, что редко.
    Поэтому я брал стол с тумбочкой с выдвижными ящичками. Куча блокнотов, тетрадок, папок для бумаг, канцелярки, проводов, запчастей, флешек и прочей радости замечательно и удобно разместилость в трех выдвижных ящичках. С одной стороны, всегда под рукой, с другой стороны — если бы это было все лежало «размазанным по столу» не хватило бы стола размером с полкомнаты. Из этого же критерия брался стол с верхней полочкой, где размещается принтер. Там же, на верхней полочке размещаются такие вещи как, пачка бумаги для принтера, чистящие средства и прочие предметы которые «чтобы заюзать, все равно вставать с кресла».

    Четвертый критерий: Хорошее, удобное освещение.
    Я установил две небольших настольных лампы которые «крокодилом» кретятся к столу на поворотных гибких длинных держалках. Одна из них, более тепло-желтая прикреплена к верхней полочке и дает общий «фон освещения», вторая холодного дневного света прицеплена к правой стороне столешницы и светит на те листочки которые на столе. За столом можно работать, не включая верхний свет. Само собой, мониторы не смотрят в окно, чтобы на экране не возникало бликов. Мониторы, кстати, два одинакового размера, одного разрешения да и вообще одной фирмы и одной модели (глаз не перестраивается когда взгляд переходит с одного на другой).

    Пятый критерий: Удобство уборки.
    Компьютеры (их несколько) стоят не на полу, а на подкатных подставочках, т.е. во время уборки можно откатить и пропылесосить.

    Шестой критерий: Удобное расположение в комнате.
    У меня рабочее место расположено рядом с книжной полочкой-министелажиком. То, что нужно — легко достать не вставая со стула.

    Седьмой критерий: Удобный стул.
    Я выбрал стул с регулирующейся поддержкой для поясницы. Когда сижу — спина прямо.

    Восьмой критерий: Когда я не занят работой, рабочее место не должно сьедать слишком много места в квартире.
    Т.е. стол должен быть оборудован выдвижной подставкой клавиатуры. Стул в неактивном состоянии задвигается под стол. Это еще один лишний агрумент против избыточной глубины стола.

    Девятый критерий: Совмещаем приятное с полейзным.
    Роль подставки для ног играют два стоящие под столом бесперебойника.

    Десятый критерий: Расширяемость.
    Правый монитор у меня подключен через четырехпортовый KVM-свитч, в который воткнуты два компа и ноутбук. То есть, сразу заложенно удобство работы на ноутбуке с нормальным экраном, нормальной мыщью и клавиатурой.

    Одинадцатый критерий: Удобная коммутация.
    Сами держалки мониторов прикрепленны не к столешнице а к небольшой конструкции-проводожержалке, которую я сам придумал и смастерил, куда частично утоплен сам KVM-свитч и она же служит для прокладки проводов. В глубину она с ладонь.

    Двенадцатый критерий: Минимум валяющихся на полу проводов.
    К задней стенке стола также прикреплена самопальная провододержалка.

    Тринадцатый критерий: Многоцелевое использование.
    Кронштейны крепления на которых мониторы подвешены над столом — поворотные. Крайний левый монитор можно, например развернуть и смотреть лежа на диване фильмы, а потом снова вернуть в исходное положение. Выступ верхней лампы служит крючком, на который повешены наушники, когда они не используются. Сами наушники, когда используются, воткнуты в колонки с USB-питанием.

    Четырнадцатый критерий: Доработки к расширению.
    В ту же настольную «провододержалку» выведены USB от компа, и RJ-54 от свича. К боковине прикреплен сетевой фильтр, в который всегда можно поставить сотовые на зарядку либо подключить ноутбук, когда кто-то ко мне приходит с ноутбуком.

    Пятнадцатый критерий: В рабочем мексте должно быть что-то что радует глаз, при этом не занимает места, и не тянет на себя слишком много внимания.
    Для меня это пингвинчики на верхней полке.

    Ну, вот, вроде ничего не забыл. Что из вышеперечисленного может пригодится лично вам-решайте сами. Скажу только, что я своим рабочим местом более чем доволен! И хочется чтобы вы тоже были также довольны рабочим местом, которое вы организуете под себя.
    Ответ написан
    2 комментария
  • Как "глушить" js ошибки от внешних элементов на сайте (счетчики, блоки фейсбука, партнерки и т.д.)?

    nkid
    @nkid
    для глушения ошибок можно использовать window.onerror, по параметрам можно узнать и место возникновения ошибки.
    Ответ написан
    Комментировать
  • Как протестировать новый компьютер на стабильность?

    Mendel
    @Mendel
    PHP-developer
    Новые машины не проверяю обычно. Разве что если есть подозрения на проблемы. Лень — слишком много их у меня проходит.

    1 — первым делом смотрю на конденсаторы на материнке. Не совсем тест, но это первое что делаю при подозрениях на проблемы с железом.
    2 — первое что я проверяю без отвертки это мемтест со зверя. Помогает не только для памяти — если два часика покрутит без ошибок, то это тоже показатель работоспособности.
    3 — индикаторы напряжений и температур в биосе и в винде. Стабильность показателей, собственно адекватность цифр.
    4 — самый старый тест на стабильность это установить винду на проверяемой машине. Не залить Акронисом образ с аналогичной машины, а именно поставить. Установка винды много чего задевает, и память и жесткий и все остальное. Желательно слушать звуки. Иногда можно услышать подозрительные звуки от жесткого диска, но это уже опыт и везение.
    5 — очень показательно бывает если не ставятся заведомо правильные драйвера на то или иное оборудование. Часто сталкивался с тем, что видик вроде работает, но драйвера не ставятся. Детальная проверка показывает проблемы с железом.
    6 — еще одна классика — 3Д игрушки. Давно не пользовался ибо нет у меня их. В идеале дает проверку видика и общенагрузочный тест. Обычно после нагрузки сразу смотрим температуру.
    7 — тестирование методом замены подозреваемых модулей тоже классика. Пример — имеем глюки. 10 минут мемтеста ошибок не дал. Меняем планку памяти. Глюки пропадают. Гоняем планку в большей нагрузке и таки находим баги.
    8 — для именно профилактического тестирования не забываем про битые пикселы. ленивый тест — разворачиваем на весь экран белый фон. Высматриваем. Далее тоже самое с черным фоном (не путать с выключенным экраном или сигналом.) Если фона нет, и лень шаманить можно взять близкое что-то и подвигать.
    9 — часто полезно протестировать такую часть системы как напряжение в розетке. Ну и хорошо бы конечно еще прокладку между креслом и клавиатурой проверить, но это уже другая история…
    10 — вообще мой выбор это «доверяй СЦ». Новые машины должны идти с выходным контролем, благо у нормальных интеграторов есть и стенды и все такое. А на выходе — локализовал проблему, и отправил блок или машину в Сервисный Центр. С СЦ надо работать так, чтобы не обманывали. Понятно что если ты работник СЦ то такой вариант не для тебя, но тогда у тебя и POST-карты есть, и вопросов таких ты не задаешь…
    Ответ написан
    Комментировать
  • Что почитать про best/worst practices в JavaScript?

    pomeo
    @pomeo
    Ответ написан
    Комментировать
  • Модификация провода наушников. Need help?

    optemist
    @optemist
    1.Значит так, берем полый шнурок (в моем случае от бейджика), наушники и средство для делания дырок(я взял зажигалку, сразу скажу эстетика еще та с зажигалкой):
    image
    2. Берем шнурок и примиряем его по шее, таким образом, что бы наушники располагались удобно. Намечаем места и делаем отверстия:
    image
    3. Распускаем провод наушников почти до конца, оставляем до штекера 3-4 см, это та часть которая у нас будет торчать и втыкаться в плеер.
    image
    4. Обрезаем распущенную часть и продеваем обрезанные проводки наушников в петельки, которые мы сделали ранее. Так же замеряем длину от петельки до самого наушника, соблюдаем симметрию. Защищаем провода, припаиваем соблюдая полярность(там все обычно по цветам) и изолируем.
    image
    5. Припаянные и заизолированные концы прячем в шнурки и обжимаем/декорируем чем либо. (Вам девушкам, видней как красоту наводить)
    Как то так:
    image
    Удачи!

    П.с.: За пунктуацию и грамматику, не отвечаю, ибо в пол второго ночи и после празднования свадьбы, мозг мой не ясен.
    Ответ написан
    1 комментарий
  • Надежные студии веб-разработки

    pelid
    @pelid
    Веб-разработчик
    Зависит от того, что вам нужно. Если задача сложная, могу посоветовать к нам обратиться 2levelup.ru ;)
    Но правда мы не используем PHP.
    Ответ написан
    Комментировать
  • есть способ научить google chrome нормально выделять текст, являющийся ссылкой?

    lex89
    @lex89
    Сверху над выделяемым местом ставите курсор, зажали, опустили и выделяем — правда не всегда корректно срабатывает.
    Ответ написан
    3 комментария
  • Javascript: String.prototype.namespace.method и this

    barmaley_exe
    @barmaley_exe
    Нельзя, т.к. Ваш объект utils не будет знать о контексте (this для него что-то неопределенное).
    Но если хочется извращений, то можно
     // https://gist.github.com/947203
    (function(){
    	var _utils = { // String.prototype.utils
    			append : function(tail){
    				return this + tail;
    			}
    		},
    		utils = {}, // фронтэнд. на этот объект будут навешены геттеры.
    					// на _utils геттеры вешать нельзя т.к. тогда мы не сможем (вроде как) добраться до методов
    		self = null, // тут будет контекст
    		generateGetter = function(fnc){ // это геттер
    			return function(){ // геттер возвращает функцию
    					return function(){ // которая при вызове возвращает
    							// результат применения соответствующего метода с нужным контекстом
    							return _utils[fnc].apply(self, arguments);
    						};
    				};
    		};
    
    	for(var prop in _utils){  // смотрим все методы _utils
    		if(_utils.hasOwnProperty(prop)){
    			// и назначаем для них геттеры для нашего фронтэнд объекта
    			utils.__defineGetter__(prop, generateGetter(prop));
    		}
    	}
    
    	// Геттер на String.prototype, который вернет наш презентационный объект
    	// Когда кому-нибудь захочется обратиться к какому-нибудь методу этого объекта,
    	// обьявленному в _utils, он попадет на геттер
    	String.prototype.__defineGetter__('utils', function(){
    		self = this;
    		return utils;
    	});
    })();
    
    // Пример
    console.log('Hello'.utils.append(' World'));
    console.log('Hello'.utils.append(' World')
                       .utils.append('!'));
    (протестировано в Опере и Node.js)


    Как видно, здесь активно используются геттеры, которые работают (вроде как) во всех современных браузерах, за исключением всего семейства IE.
    Но самая большая печаль — ужасная неоптимальность этого кода. Вы только посмотрите на 3 (!!!) вложенных функции. И это я еще применил грязный хак с кешированием this в переменной self, дабы не создавать новых объектов.
    Ответ написан
    2 комментария
  • Читаете ли вы толмуты по программированию в 1000-с лишним страниц от "корки до корки"?

    andrey_kl
    @andrey_kl
    Такие как JavaScript Флэнагана — с удовольствием.
    Ответ написан
    Комментировать
  • Функция jQuery — антипаттерн God Object?

    GearHead
    @GearHead
    Fullstack разработчик и предприниматель
    Функция jQuery, т.е. сама по себе $(smth) — standalone-функция, возвращающая набор DOM элементов в особой обёртке. Все функции $.smth (к примеру $.each, $.get и т.д.) просто в отдельном пространстве имён. Здесь нет никакого God Object. Иначе отделение мат. функций в объект Math все бы тоже называли этим антипаттерном.
    Ответ написан
    1 комментарий
  • Телефонная книжка на андроиде

    WNeZRoS
    @WNeZRoS
    Контакты с симки автоматически не переносятся и не удаляются. Их нужно руками копировать/переместить в (гугл-)контакты. На симку сохранить контакты нельзя, только на SD карту.
    Ответ написан
    3 комментария
  • Magic Mouse - люфт

    Alexx_ps
    @Alexx_ps
    Это и есть магия — продать мышь с люфтом за дорого :)
    Ответ написан
    6 комментариев
  • Посоветуйте художественную литературу для программистов

    fStrange
    @fStrange
    Г.Л. Олди «Мессия очищает диск»
    Ответ написан
    Комментировать
  • Есть ли правила/соглашения по применению dashed и dotted типов гиперссылок?

    babai
    @babai
    Имхо, dashed/dotted (на вкус) — ссылки означают действие без перезагрузки страницы.
    Ответ написан
    8 комментариев
  • Отправка расширением всех url открываемых в Google Chrome

    drfisher
    @drfisher
    Пишу JS
    Помимо бэкграунда создать «content script» с маской, позволяющей ему работать (встраиваться и выполняться) на любой странице. Единственной задачей этого скрипта должна быть передача бэкграунду данных из адресной строки.
    Про общение с фоновым скриптом можно почитать здесь.
    Ответ написан
    1 комментарий