Мой профиль...

Search This Blog

Friday, November 7, 2014

PHP: конструктор по умолчанию (default constructors)

Рассмотрим следующий код:
  1. class Animal {  
  2.     protected $what = "nothing";  
  3.     function sound() {  
  4.         echo get_class($this)." says {$this->what}";   
  5.     }  
  6. }  
  7.    
  8. class Cow extends Animal {  
  9.     protected $what = "moo";  
  10.     protected $owner;  
  11.     public function __construct($owner) {  
  12.         // parent::__construct(); (?)  
  13.         $this->owner = $owner;  
  14.     }  
  15. }  
  16.    
  17. $a = new Cow("Old McDonald");  
  18. $a->sound();  
В данном коде представлена простая иерархия классов.
Теперь посмотрим на 12-ую строку кода отмеченную (?). Конечно, в данном случае мы можем не вызывать родительский конструктор, но...

Предположим, со временем мы дополнили родительский класс:
  1. class Animal {  
  2.    protected $born;  
  3.    public function __construct() {  
  4.       $this->born = time();  
  5.    }  
  6. }  
Вроде бы, мы ничего не поменяли, но теперь все наследуемые классы работают неверно, т.к. не вызывают родительский конструктор. Для того чтобы это исправить, нам нужно пройтись по всем классам потомкам и добавить вызов родительского конструктора.

Мы могли бы избежать этой проблемы, если бы придерживались простого правила: вставлять вызов родительского конструктора, даже когда он пустой. Если родительский конструктор не определен, то вызов parent::__construct() не будет делать ровным счетом ничего. Но, если мы когда либо внедрим родительский конструктор, все наши дочерние классы будут готовы.

Saturday, July 5, 2014

Вопросы для IT-собеседования - Questions for IT interview

Вопросы для IT-собеседования:
— Вы ранее привлекались за хранение данных в глобальных переменных?
— Какой результат выполнения команды git push me and then just touch me till I can get my satisfaction, satisfaction?
— Найдите точку G бинарным поиском
— Вы когда-нибудь делали .Net за деньги?
— Вы способны довести девушку до оргазма языком программирования?
— В своём резюме вы указали знание Delphi. вам не стыдно?
— Почему люк скайуокер круглый?
— Какой из циклов быстрее, for, while или правило буравчика? оО
— Перед вами кисть, холст и мольберт. напишите компилятор
— Расскажите что-нибудь про Pascal
— Как часто вы говорите своему коду "ну пожалуйста.."?
— У кого был самый длинный код в вашей прошлой команде?
— Вы моете руки перед правкой кода на продакшне?
— Вас раньше обвиняли в попытках программирования?
— Ну признайтесь уже — джаваскрипт алертами дебажили?
— Можете ли вы провести аналогию между работой на пятилетнем проекте и проктологией?
— Что, по-вашему мнению, более эффективно: скопипастить код из примеров или убедить заказчика, что ему не нужна эта фича?
— Если честно, то нас немного смущает тот факт, что вы искали работу программиста через биржу труда...
— Согласны ли вы что каждый девелопер должен посадить зрение, построить велосипед и вырастить репозиторий?
— В своем резюме вы указали, что хотели бы поработать на интересном проекте... вы этот проект с собой принесли?
— Правда ли, что смесь php, css, js, html и sql в одном файле имеет слабительный эффект?
— Согласны ли вы, что у админа должна быть борода, даже если админ — женщина?
— Скажите, вы когда-нибудь симулировали ООП?
— Каким вы видите свой код через пять лет?
— Xbox, PlayStation или Terminal — какую консоль предпочитаете?
— Вас когда-нибудь запирали в серверной? За что?
— 2048 или “Косынка” — в чём вы более успешны?
— Вы толерантны к копипастам?
— Цикл, условие, переменная — а какие еще термины из С++ вы знаете, чтобы отказать парню?
— Цой, Ленин, Delphi — что между ними общего?
— Как объяснить джуниору что пинговать сервера в его возрасте – это нормально?
— Назовите самое экстремальное место в котором вы занимались багфиксингом
— Напишите простейшую операционную систему. уложитесь в 140 символов
— Как вы относитесь к легализации курения мануалов?

Thursday, March 13, 2014

Округление результата деления до целого - rounding to the nearest whole

Часто забываю хаки, которые иногда использую, по этому нужно их публиковать, дабы не потерялись:

Как округлить до большего целого результат деления?
x = (a+(b-1))/b.

Monday, November 4, 2013

Уменьшился объем флешки, что делать? (change flash volume)

Многие люди работающие с картами flash-памяти (флешками), например фотографы, иногда сталкиваются с проблемой — флешка уменьшилась в объеме. Да-да-да, как бы невероятно это не звучало, но это так. С этим столкнулся и я :)
Вот так выглядело окно свойств флешки на 16 Гб. Доступно всего 8 Гб!
Уменьшился объем флешки (12)
Решение этой проблемы оказалось очень простым! Любой сможет восстановить полный объем своей флешки буквально за минуту. Читайте далее.
Для начала откроем диспетчер дисков.
  1. Откройте «Панель управления» (Пуск \ Панель управления).
  2. Откройте элемент «Администрирование».
    • Если у вас Windows 7 или 8 введите в строке поиска (справа сверху) «администрирование» тогда соответвтующий пункт появится в панели управления.
    • Если у вас Windows Vista, то переключите панель управления в «классический вид» в меню слева, если вы уже не сделали этого ранее.
  3. Откройте элемент «Управление компьютером».
  4. Кликните на пункт в дереве слева «Управление дисками».
Уменьшился объем флешки (11)
Итак, мы видим что флешка (в моем случае это EOS_DIGITAL J:), поделена весьма странным образом. Половина занята активным разделом, и половина флешки просто не размечена. Кликаем на активном разделе и видим грустную картину — мы не можем ни удалить этот раздел, ни расширить его на весь объем флешки.
Уменьшился объем флешки (10)
Кликаем по неразмеченной области правой кнопочкой мышки и видим еще более грустную картину — мы ничего не можем сделать с неразмеченной областью.
Уменьшился объем флешки (9)
ОК, пришло время для ремонта флешки. Открываем меню «Пуск» и вводим в строку поиска «cmd». Затем кликаем правой клавишей мышки по пункту «cmd.exe» и далее — «Запуск от имени администратора». Если вы обладатель Windows XP, то вы можете нажать Win+R (или Пуск \ Выполнить…) и ввести там cmd.exe и нажать Enter.
Уменьшился объем флешки (8)
В открывшемся черном окне вводим diskpart и нажимаем Enter. Откроется утилита для работы с дисками, которая может больше чем стандартный интерфейс Windows.
Уменьшился объем флешки (7)
Затем вводим LIST disk и наживаем Enter. Вы увидите список подключенных к вашему компьютеру дисков. Теперь самый важный момент, вам нужно понять какой из дисков ваша больная флешка. Лучший ориентир — объём. Чтобы упростить себе задачу извлеките все остальные съемные носители из своего компьютера — карточки памяти в кардридере, USB-флешки, внешние жесткие диски и т.п. Так этот список будет значительно меньше.
Итак, смотрим на список и вспоминаем что моя флешка 16 Гб (так написано на коробочке). Диск 0, 1 не подходят, они по 698 Гб что явно больше, это два моих жестких диска. Диск 2 не подходит, он всего 1886 Мб, что менее 2 Гб, это флешка во встроенном кардридере. Диск 3 и 4 пропускаем — они не подключены, остается диск 5 — 15 Гб это наша флешка. Вы можете спросить: «почему? Ведь наша флешка 16 Гб, а тут 15!». Так происходит из-за того что производители указывают фактически больший объем на укаковке, нежели чем есть на самом деле. Компьютер считает что в 1 Гб 1024 Мб, а производители флешек считают что в 1 Гб 1000 Мб. Это давно известный факт.
Уменьшился объем флешки (6)
Итак, вы определили номер вашего диска. В моём случае этот номер — 5. Вводим SELECT disk=5 и нажимаем Enter.
Уменьшился объем флешки (5)
Программа сообщает что выбран диск 5. Следующим шагом мы удалим все разделы с диска и следовательно все данные что есть на диске пропадут. Если на фашей флешке есть что-то что вы хотите сохранить, то самое время это сделать.
Вводим CLEAN и нажимаем Enter.
Уменьшился объем флешки (4)
Программа сообщает что очистка диска выполнена успешно. Переходим обратно в стандартный диспетчер дисков Windows и нажимаем кнопку «Обновить». Мы видим что наша флешка теперь неразмечена. Кликаем по неразмеченному месту правой клавишей мышки и выбираем «Создать простой том…».
Уменьшился объем флешки (3)
Выставляем нужные параметры. Если это флешка для фотоаппарата, видеокамеры и т.п. то скорее всего лучше выбрать файловую систему FAT32. Размер кластера — по умолчанию. Метку тома лучше сохранить той, которая было до форматирования. У меня фотоаппарат Canon, метка тома EOS_DIGITAL. Хотя в принципе вы можете написать туда что угодно :) Поставте галочку «быстрое форматирование» и нажмите «Далее».
Уменьшился объем флешки (2)
По окончании форматирования свойства флешки стали такими, какими они и должны быть.
Уменьшился объем флешки (1)
Вот и все. Удачи!

Friday, November 1, 2013

Переключение языка CapsLock'ом в MacOS

Этот пост будет интересен только пользователям компьютеров с MacOS X.
Как-то раз я нашел у Лебедева раскладку «Мефодица», позволяющую переключать язык в MacOS при помощи CapsLock.
Сама идея показалась хорошей, но реализация мне не понравилась.
Знаки препинания в лебедевском варианте ставятся без нажатия шифта, а цифры, соответственно — наоборот. Это было неудобно: без шифта должны быть цифры — это классическая раскладка, я к ней привык. По счастливому совпадению решение нашлось в тот же день, лепер Tridento сделал аналогичную, но классическую раскладку — Lipton.bundle
И так, приступим. Качайте файл по ссылке выше, разархивируйте и скопируйте в:
/Library/Keyboard Layouts/
Теперь надо настроить соответствующим образом систему:
Все, теперь можно убедиться в работоспособности переключения капслоком. Если же у вас выбрана английская раскладка, необходимо выбрать раскладку «lipton», т.к. стандартный хоткей мы отключили, используйте alt+cmd+space — все равно надо один раз, дальше будем переключать капслоком.
Если текст не вводится, перезагрузите компьютер.

P.S.
Не отходя от кассы:
Под мак нашлось отличное средство Киргуду!
Скачал программу тут: pihto.com/download/kirgudu/kirgudu.dmg

Под винду можно скорее всего через пунтосвитчер организоваться + посмотреть в сторону http://msdn.microsoft.com/en-us/goglobal/bb964665.aspx
Под Линус и так понятно.
В итоге однозначный для всех систем переключатель раскладки в виде CapsLock вырывается вперед.

Здравствуй Windows - Новый Год! (с) Улучшаем shell

Для начала не стоит удивляться, да, сейчас я сижу на Винде.
Рядом тихо пылится MacAir, но...

Вернувшись в Виндовс, что обычно первым делом бросается в глаза?
Консоль! ДаДаДа! Консоль.
После удобной, отличной консоли на linux на cmd.exe смотреть без слез невозможно.


Давайте чуть ее улучшим.

Прежде всего, при переходе из bash в cmd.exe доставляет неудобства ограниченность самой командной оболочки. Чтоб вставить текст из буфера обмена нужно тянуться к мышке, не хватает возможностей автодополнения, история хранится только в пределах одной сессии, к тому же не работает Ctrl+R и другие возможности работы с историей команд в bash.

Исправить ситуацию нам поможет clink. Это Open Source утилита расширяющая возможности cmd.exe. Вот некоторые ее фичи:

  • Автодополнение по нажатию Tab. Возможности автодополнения могут быть расширены за счет пользовательских скриптов на Lua
  • Вставка текста из буфера по нажатию Ctrl-V (к сожалению Shift+Insert не работает)
  • Продвинутая работа с историей команд. Поиск по истории (Ctrl-R and Ctrl-S). Поддержка таких выражений как !!, ! и !$
  • Сохранение предыдущих сессий

Скачали. Установили. Стало лучше, теперь cmd себя ведет почти как bash. Но кое-чего по прежнему не хватает. А именно привычных unix-утилит. Таких как cat, ls, tail, diff, grep, less, sort, wget и т.д. Некоторые утилиты имеют свои Windows-аналоги, например, вместо grep можно использовать findstr, но к ним придется привыкать заново, другие же аналогов вообще не имеют.

Эту проблему нам поможет решить готовый набор программ UnxUtils. Набор включает в себя множество популярных в Unix и Linux инструментов командной строки (полный список можно посмотреть по этой ссылке) а так же несколько дополнительных программ.

В частности, к дополнительным программам относятся pclip.exe и gclip.exe предназначенные для работы с буфером обмена Windows. Например вот так: pclip | sed "s/string1/string2/g" | gclip можно заменить все вхождения string1 на string2 в тексте хранящемся в буфере обмена.

Для того чтоб получить всё это на свою Windows-машину нужно скачать архив UnxUtils.zip, распаковать его содержимое в какой-то каталог и добавить в переменную среды PATH путь к usr\local\wbin\, т.к. именно там хранятся исполняемые файлы.

Для самых ленивых есть способ еще проще: скопируйте содержимое каталога usr\local\wbin\ из архива в каталог %WINDIR%\system32\ на вашей машине.
Внимание! Если вы решили поступить именно так, то я не рекомендую заменять системные файлы на одноименные файлы из архива без четкого понимания того, что вы делаете.

Что нам осталось? Правильное выделение мышью? Нивапрос!

В реестр добавляем два параметра:
HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
MouseSelect DWORD 1
QuickEdit DWORD 1
Как теперь работает выделение мышью? Левой кнопкой выделяем, правой вставляем.

Удачной работы.

Monday, December 10, 2012

Как придумать ядрёную “Тему” для Вашей e-mail рассылки?

Сегодня я хочу поговорить с Вами о том, как же придумать убойную “Тему” для рассылки.
Слово “Тема” я взял в кавычки, поскольку речь идёт не о смысловой теме рассылки, а о поле в электронном письме. Практика показывает, что эти два понятия не всегда тождественны.

Что Вы видите когда получаете электронное письмо от человека?
Очевидно Вы видите:
  1. От кого оно пришло
  2. Дату приёма сообщения
  3. Тему (или заголовок) письма
Все эти три поля влияют на принятие Вами решения: читать или удалить.
Редкий человек сегодня получает себе в электронный почтовый ящик 1-2 письма в день. Даже если мы не воротила интернет-бизнеса, то к нам всё равно приходят рассылки, открытки, спам, напоминания какие-то.
Даже если не пришло ни одного письма во “Входящие”, то мы заглянем в папку “Спам”: “А не завалялось ли там случайно интересное письмо?”.

На что мы сразу обращаем внимание?

Первое – это кто автор сообщения. От кого оно пришло?
Если это письмо от друга, брата, жены или коллеги, то мы можем даже не читать тему письма. Мы сразу открываем его, поскольку уже знаем, что там что-то такое, что нам важно.
Второе на что мы смотрим – это тема письма. Если автор нам не настолько близок, чтобы открывать все подряд его письма, то мы стараемся оценить насколько нам вообще интересно читать то, что находится внутри.
Ну и последнее на что мы смотрим – это конечно же дата. Если мы видим, что письмо уже давнее, то и открывать его не станем.
Как правило, для большинства подписчиков, Вы не будете находиться в первом круге ожидания (хотя будут и такие подписчики). Большинство будет принимать решение “Читать или НЕ Читать” именно по теме письма.
Если тема письма будет для большинства интересной, то письмо откроется, если нет, то увы.
Поэтому давайте сейчас рассмотрим основные принципы и шаблоны составления грамотного поля “Тема” для электронного письма.

7 основных пунктов

  1. Краткость. В отличие от продающих текстов, где заголовок в принципе может состоять из нескольких предложений, в e-mail рассылке делать его необходимо кратким. Это связано с тем, что писем приходит много, а размеры экрана ограничены, поэтому часть темы письма может просто не показаться.
    Например: “Быстрый способ заработать”
  2. Провоцирование. Иногда в заголовках неплохо работает провокационные фразы. Ими не стоит злоупотреблять или делать их на грани фола, однако часто они повышают открываемость писем и положительно влияют на лояльность подписчиков.
    Например: “Эта методика поможет нанять даже президента к Вам на работу”
  3. Ключевая фраза. Очень хорошо работает, когда у Вас туго с креативом, да и аудитория Ваша довольно консервативная. Например в “мягких рынках” только ключевая фраза и работает.
    Например: “Как самостоятельно построить баню”
  4. Цифра с перечислением. Этот способ часто применяется в глянцевых журналах, массовых изданиях вроде “АиФ” или “Комсомольская правда”. Метод древний и рабочий.
    Например: “7 способов быстро научиться играть на гитаре”
  5. Призыв к действию. Классика копирайтинга учит нас призывать людей к действию в любом сообщении. На практике это делать сложно, но часто в темах писем очень хорошо срабатывает.
    Например: “Создайте свой бизнес за 7 дней…”
  6. Ограничители по времени. Обычно их используют во время различных распродаж. Вот тут как раз тот случай, когда читатели обращают внимание на поле “Дата получения” в своём почтовом клиенте :-)
    Пример: “Получите специальный купон, который действует только 24 часа”
  7. Отсебятина. Этот метод используется многими, но у большинства он работает просто ужасно. Креативить темы писем тоже надо уметь. Но тут нужно действительно очень тонко чувствовать свою аудиторию. Тут может быть некая шутка, “желтизна”, вопрос или что-то ещё.
    Например: “Вы не один. Нас много”
Как видите, создавать “Темы” для писем не самое сложное занятие. Нужно понимать принцип и пользоваться шаблонами.
Помимо всего есть так называемые “крошки”, которые помогают увеличить открываемость писем.

Что это за крошки?

  1. Вопросительность. Как показывает практика, вопросительные темы работают лучше таких же, но утвердительных.
    Например: “Как построить дом” работает хуже, чем “Как построить дом?”
  2. Эмоционально сильные фразы. Фразы вроде: “Важно”, “Срочно”, “Шок”, “Бесплатно”, “Прямо сейчас”, “Раскрыто”, “Стоп”, “Внимание” и им подобные приковывают внимание и заставляют кликнуть и заглянуть внутрь письма.
    Например: “Получите бесплатно 24 часа видео о строительстве дома”
  3. Префиксы. Многие авторы рассылок используют префиксы в теме для того, чтобы читатель сразу мог понять к какой категории относится информация. Обычно такие префиксы используются при общении не со всеми подписчиками, а с клиентами или партнёрами. Это подчёркивает важность письма. Префиксы обычно находятся в квадратных скобках.
    Например: “ [клиенту]Получите 3 новых урока по созданию уютного дивана своими руками”
  4. Указатели. Довольна новая фишка, которую я подсмотрел у Jon Benson. Смысл указателей заключается в том, чтобы дать подсказку того, что у Вас внутри письма.
    Например: “Получите 20 уроков по вышиванию! <= Скачать”
  5. Недосказанности. Недосказанности обычно выражаются незаконченными предложениями и многоточиями в конце.
    Например: “Об этом думают девушки на первом свидании…”
Конечно не стоит думать, что в каждом письме у Вас должен быть набор всех этих пунктов. Это ни логически, ни технически не реально.
Однако теперь Вы для каждого случая можете запросто выбирать то, какой шаблон подходит в том или ином случае и его использовать.

Релевантные посты...

Related Posts with Thumbnails