понедельник, 26 декабря 2011 г.

new light Bug tracking


Никто не знал, а группы в facebook е очень неплохая легкая версия системы отслеживания ошибок  (http://en.wikipedia.org/wiki/Bugtracker)
Там уже много чего есть:
- создание заданий (тем)
- внутрисистемный чат (стена)
- извещение на почту об ответах
- незнаю точно, есть ли извещение на почту при создании темы...
- возможность добавления файлов (картинок, видео...)
- с помощью Like тестер может указать, что баг исправлен
и возможно что-то еще...

И самое главное преимущетсво, что никому не надо привыкать к этой системе или обучаться ей. Все ее и так уже знают.


суббота, 24 декабря 2011 г.


Почему-то, в СНГ принятно все переменные в коде, поля и таблицы в БД называть по-английски, а вот в странах Европы это совершенно не обязательно!?
Голандцы пишут на нидерладском, французы на французком... Как хотят так и пишут это просто пипец какой-то. А еще ругаются на русских программистов...



четверг, 22 декабря 2011 г.


Когда решите скачивать по FTP какую-то папку, сначала посмотрите что в ней!!!!

Нахрена качать кешированые данные?!

Двое в офисе начали качать эту папку как только локальные сервер пожаловался что ее не находит.

вторник, 13 декабря 2011 г.

Это же прелесть:


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

Вражда между ним и другими членами Anonymous, явившаяся результатом взлома сайта AnonOps, принадлежавшего группе, и публикации IP адресов ее членов, заставила Anonymous выдать все данные о Клери, включая полное имя, адрес, номер телефона и IP на сайте группы. Именно эти данные в скором времени помогли властям найти, арестовать и обвинить Клери.

Да... потрясающее достижение прийти домой к человеку и тупо арестовать. Достижение дальше не куда, верх могущества властей...


среда, 7 декабря 2011 г.

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

Так ведь нет! На каком хотят на таком и пишут! Хотят на немецом, хотят на французком!

А еще гонят беса на СНГ-вских программеров.

Почему названия таблиц в базе на любом языке кроме английского!?

воскресенье, 27 ноября 2011 г.

день Программиста

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

четверг, 24 ноября 2011 г.


Читаю очень умную книжку - "Чистый код" Роберт Мартин (Robert C. Martin "Clean Code") 2010г.
Пока до половины только прочел...

В предисловии к книге автор допускает, что с его мнениями можно не согласиться. Вот я и не соглашаюсь по одному из них.
На странице 90 (в книжном варианте, иначе 91) автор пишет, про избыточность обязательных комментариев Javadoc (про это там еще где-то написано). И я ни сколько не сомневаюсь в уме этого товарища.
Только он забывает, что по этим комментариям потом можно будет собрать отличное руководство по проекту, в том числе и по классам. О коде-то он позаботился, а что с проектом делать потом, когда все комменты почистить? Люди упрощают создание мануала, понимаешь, а он тут раз и нафиг все.

К тому же, современные IDE позволяют отлично скрывать все комментарии, даже при загрузке файла, так что комменты, написанные в стиле Javadoc ни коем образом не помешают.

А в php IDE еще и читает эти комментарии и с помощью них восполняет отсутствие строгой типизации в php. К примеру, напишите такое:

/**
* @return UserObject
*/
public function getSomeUsers(){
$userObject = new UserObject();
...
return $userObject;
}
И когда вы будите использовать что-то возвращенное этой функцией, IDE поймет, что вы пользуетесь объектом UserObject!



Ну даже и без этого, все равно можно не согласиться с избыточностью  комментариев.
Вот переменная: duration - Продолжительность воспроизведения в минутах. А как узнать без комментариев в минутах или в часах эта самая продолжительность?
Кстати, если называть durationInMinutes, то это еще тот бред, а если в часах понадобиться, переназывать переменную и свойство класса? так это ж рехнуться можно будет...




PS: кстати у него в коде там ошибка, или не у него, там где он его брал в общем.

суббота, 19 ноября 2011 г.


Прочел новость о движении http://occupyflash.org/ и жутко меня взбесила эта ситуация.

http://lenta.ru/news/2011/11/18/ocflash/

Ага, давайте теперь уберем все игры из facebook-а, и зря вы все "придурки" трудились над созданием библиотек для создания 3D на флеше...

Еще все очень легко забывают о такой маленькой вещи, как программисты. Дело в том, что на ActionScript довольно легко и быстро работать. Приличный интерфейс можно создать за считанные дни. Да и не только интерфейс, множество удобных вещей.

А как сделать всякие "укрошалки"? Видел кто ни будь красивые сайты на флеше посвященные играм или мультфильмам? Пробовали уже с помощью JavaScript-ов, по сравнению с flash полное убожество.

А попробуйте сделать небольшую презентацию в 3D для компании с помощью С++? Увидите ее через несколько месяцев. На Flash гораздо быстрее.

Кстати о Flex, выкинем нафиг эту технологию. Теперь она оказывается нафиг не нужна!

Flash не заканчивается на видео плеерах для YouTube.com! (К слову, который уже отказывается от флеша для своего видео).
У этой технологии(и смежных) огромное применение в интернете. Выступая против Flash "особо умные" выступают против всей той "ниши" которую сейчас занимает Flash. И которую HTML5 заполнить пока не в силах.

Теперь немного о другом:

"Веб - это открытое пространство, и мы выступаем за использование открытых технологий в интересах пользователей", - заявил один из участников движения в интервью сайту Computerworld.

Хочется спросить, чтож ты, мудак, не выступаешь против Internet Explore-a ? Он же вроде как тоже использует "закрытые" технологии.
А про Silverlight тоже благополучно забыли? Или это все движение occupyflash направлено на удаления Flash и установки Silverlight?


PS: на всякий случай, под технологией Flash я так же подразумеваю и Flex.
PSS: почему-то это движение против флеша напомнило фашисткое движение...

пятница, 18 ноября 2011 г.


Вчера Skype выдал мне ошибку и благополучно вырубился:

Access violation at address 00406048 in module 'Skype.exe'. Read of address 8BF632D8.

И это случилось всеголишь при исчезновении интернета.
Может это Microsoft так дурно влияет..? Раньше такого не было.

вторник, 15 ноября 2011 г.


А мне понравилось работать в JavaScript с классами, создаваемыми для каждого функционала отдельно.
Так гораздо проще управляться с кодом и гораздо понятней.
Не говоря уже о том, что использовать повторно такой функциональный класс очень удобно, копируешь его весь и все работает, не думаешь уже ни о каких-то неучтенных внешних переменных или левых функциях.

пятница, 11 ноября 2011 г.

Great tools: for test Regular Expression and JavaScript


Два классных приложения которыми я часто пользуюсь.


Во первых, это приложение для тестирования регулярных выражений (http://en.wikipedia.org/wiki/Regular_expression)
написанная на флеше, поддерживает разные вспомогательные фичи, подсказки, пометки... в общем вещь классная, рекомендую всем:

http://gskinner.com/RegExr/

Второе приложение, надавно нашел, предназначено для тестирования яваскриптов (JavaScript).
Поодерживает различные фреймворки, различные настройки... Так же можно писать не только html-ый код, но и добавлять Css.
Хоть на данный момент это и Alpha версия,  это ни сколько не уменьшает полезность приложения:

http://jsfiddle.net/zR34a/

В общем всем рекомендую пользоваться ими и даускориться разработка ваших проектов.

понедельник, 26 сентября 2011 г.

Online tools.

Как часто приходилось искать для себя хэш md5 для пароля в базе, или видите какую-то непонятность ввиде закодированой строки в base64...
Сейчас это можно все найти в одном месте и не мучать поисковик в поисках нужно сайта.

Недавно нашел новый сайт, которым активно пользуюсь

tools.alpha-r.com

А как быстро узнать дату, полученную в timestamp ?

Все на одном сайте, с быстрым доступом к любому функционалу.



пятница, 23 сентября 2011 г.

Magento and AVK


Кто ни будь видел как работает мадженто (Magento) с включенным антивиросом Касперского (AVK)? Лучше и не видеть, это просто полный пипец облом. Это называется сохранение продукта в админке на Intel i5.




Вообще-то magento и так само по себе ну очень тормознутое создание, но как оказалось, его можно еще больше прибить.

среда, 7 сентября 2011 г.

Слушай и проверяй


Если заказчик разговаривает о каком-то "предмете"(картинка, заказ, какой-то файл, баг...), пусть сначала покажет этот "предмет". Только потом можно будет дальше общаться.

Без этого выслушивать предположения и выводы заказчика вредно для состояния нервной системы программиста.

Очень часто заказчик путает или не до конца понимает о чем он говорит, иногда даже считает не правильно. А бывает заказчик вообще сам просто передает чьи-то слова и тогда вообще смысл проблемы в корне меняется.

И так, сначала смотрим на то, что обсуждаем, а затем продолжаем обсуждение.

вторник, 6 сентября 2011 г.

Заказчики, думайте по-чаще

Подборка самых ..., что очень часто бывает и что больше всего достает.


Дизайнер сдает работу заказчику. Заказчик удовлетворенно кивает, со всем соглашается:
— Ну, вроде бы все принято!
— Отлично, с вас 1500.
Заказчик, отдавая деньги: «Я надеюсь, если потом нужно будет переправить, можно обратиться? Это ведь не так, что один раз сделали и забыли? “
— Разумеется, в зависимости от того, что и как нужно будет исправить.
— Ну конечно! Я же не скажу “Давайте все переделаем”!
— Не вопрос. Кстати, еще один момент. Можно и мне потом, если у меня вдруг кончатся деньги или возникнут новые планы, я обращусь к вам насчет немного доплатить? Это мелочь, мне требуется очень редко, думаю, вас не затруднит.
— ???
— Да вы не переживайте! Я же не подойду к вам, мол, заплатите мне еще раз!

Покупатель: Наш бюджет $400, но нам не нужно ничего сложного… (самая идиотская фраза) вы пользовались программой Аутлук?
Я: Да, конечно!
Покупатель: Вот нам нужен сайт с таким же функционалом, плюс несколько доработок.


— Меня интересует разработка сайта-визитки. На нем должна быть возможность заказывать товары, оплачивать кредитной картой, регистрироваться, добавлять фотки и переписываться с друзьями.


Самое интересное - так и бывает!



понедельник, 5 сентября 2011 г.

Недавно узнал от товарища одну особенность у IDE Eclipse и проверил ее в NetBeans. При написании коментария к функциям синтаксисом PHPDocumentor(etc...), примерно так:

/**
* @return CommonObject
*/

Если функция неявно возвращает объект, то IDE увидя такой тег, будет считать, что функция возвращает объект класса CommonObject и соответственно сделает правильное подсвечивание кода.


четверг, 1 сентября 2011 г.

Вот мне интересно, откуда у человека растут руки, который пишет такой код:

 ((JDialog)((JRootPane)((JLayeredPane)((JPanel)((JScrollPane)((JViewport)this.getParent()).getParent()).getParent()).getParent()).getParent()).getParent()).dispose();

и человек ли это вообще писал...

PS код предоставлен одним товарищем, которому тоже не понятно откуда такое вообще береться...

среда, 24 августа 2011 г.

Баг в php

http://www.xakep.ru/post/56566/

Специалисты по PHP призывают пользователей избегать обновления до версии 5.3.7, выпущенного на прошлой неделе и содержащего серьезный баг, затрагивающий некоторые криптографические функции.

воскресенье, 21 августа 2011 г.

Универсальность

В программировании эта тема занимает не последнее место. Недавно окончательно сформировалась мысля по этому вопросу.

Меня и раньше посещали подобные мыли и к тому же подтверждались на практике. А теперь у меня есть и формулировка, примерно дословно, воссозданная по словам одного товарища, под именем Коля:
"чем больше универсальности, тем больше костылей придется доделывать при использовании нестандартных действий".

Как и во многих других вещах возвращаемся к "Золотой середине".
Иначе говоря, универсальность должна использоваться в меру и без фанатизма. Иначе можно получить такой запутанный код, что будет легче переписать все, чем разбираться в нем.

понедельник, 27 июня 2011 г.


В Базах Данных никогда нельзя писать названия баз, таблиц, процедур, функций и т.д., используя верхний регистр.

Ошибиться в регистре очень легко. К примеру, как писать Id или ID. Все пишут по разному, как им захочется и согласно своей внутренней логике, временами на совпадающей с логикой другого программиста.

Ошибиться легко, а исправлять и доводить до "ума" потом будет очень сложно.

суббота, 18 июня 2011 г.

Проводил сегодня собеседование и узнал, что "SOAP используют в Microsoft", чему не мало удивился.
А на вопрос:  А что, только там? Получил ответ: Нет, не только, но Microsoft разработала этот протокол.

Интересно, а Office в Microsoft-е используют?

пятница, 17 июня 2011 г.

вторник, 31 мая 2011 г.

Понятное отображение

Как часто пользуемся функцией php var_dump() или print_r()? И как постоянно ломаем глаза, пытаясь в бардаке симолов разобраться хоть в чем-то.

И как мало людей знают как бороться с этой мешаниной...

Но тем не менее...

Да придет спаситель в виде тега html < pre > !

Оберните в него ваш дамп и будет вам счастье.



понедельник, 16 мая 2011 г.

лучше один вызов, чем два

Не забываем, что:

$var = function();
if(!$var){
    $var = newFunction();
}
echo $var;


работает быстрее чем:

if(function()){
    $var = function();
}else{
    $var = newFunction();
}
echo $var;

Второй способ к тому же вообще не правильный.


среда, 11 мая 2011 г.

Установил вчера NetBeans 7.0, так с языком интерфейса такая прикольная штука получилась, даже сперва озадачила отсутствием настройки в меню :)

среда, 4 мая 2011 г.

кавычки

Очень против использования двойных кавычек там, где можно использовать одинарные. Т.е. для простых строк. А конкатенацию строки и переменной, содержащую строку, делать исключительно с помощью точки ".".
Основной довод не использования двойных кавычек это, конечно, скорость.

пятница, 4 марта 2011 г.

Глобальные переменные

Не смотря на первичную легкость использования глобальных переменных, последствия такого подхода могут оказаться плачевными.

Не используйте глобальные переменные, потом не найдешь где в них и в какой последовательности что-то записывали. К тому же если все туда пихать, бардак получиться. Что потом удалять, когда... В общем куча проблем полезет.

среда, 16 февраля 2011 г.

Ну почему в Eclipse поиск делается по Ctrl+K когда везде оно же выполняется по F3 ?
это же ахтунг...

четверг, 20 января 2011 г.

Открыли сессию?

Как часто многие php-сты открывая сессию(session_start()), а если и не один раз то вообще ужас, могут однажды увидеть такое:
"cannot send session cache limiter headers already sent"
 А потом еще и искать, что за нафиг случился...

Одно из решений:
if (!session_id()) session_start();
И больше ни когда не придется видеть ту жуткую надпись.

Но в любом случае, таких ситуаций необходимо избегать архитектурными решениями на стадии  проектировании приложения.

вторник, 18 января 2011 г.

random или псевдо-случайные числа.

Речь пойдет о стандартной функции в php.

rand() -  Generate a random integer.

Однажды ночью обнаружилась  принеприятнейшая ситуация. Тестим мы сервак на высоконагруженность, бомбя его большим количеством соединения за короткий промежуток времени. И тут в одном месте видим потерю соединений в 70-80% случаях. Немного прифигев. т.к. к базе обращений очень мало, циклов больших по проекту не ожидалось..., начали искать...
Долго искали в разных местах...
А была, казалось бы, безобидная функция... Из массива случайно выбиралось значение, потом выбиралось следующее случайное, но с проверкой, чтоб они не совпадали... получалась рекурсия...
И, видимо, при частых обращениях у rand() наступал кондратий, возвращая одинаковые значения, от чего наша рекурсия стремилась к бесконечности. Стоило убрать проверку равенства случайных чисел и все заработало без проблем.

И так:

Никогда не сравнивайте случайные значения.

Ищите либо другой способ реализации функционала, либо удостовертесь, чтоб такая проверка не попадала под большие нагрузки.

Кстати, это же касается и функции random() в MySQL и PostgreSQL.
При очень высокой частоте соединений, такой запрос:
select * from table random() limit 2;
может положить сервак.

Есть подозрение, что это касается и других языков программирования.

Про id и таблицы

И сегодня о таблицах...

В cross таблицах, в качестве ключей, должны храниться только(!) идентификаторы (id) таблиц.

Скорей всего, так же может храниться другая необходимая дополнительная информация, типа datetime записи.
Но самое главное, базы должны связываться между собой не какими-то ключами(текстовыми), а исключительно идентификаторами.

Казалось бы, это и так понятно, и все так и делают... А нет, не все. Ну а раз не все, значит это надо  записать и показать тем, кто делает не правильно.

среда, 12 января 2011 г.

Лень матушка.

Давно собирался об этом написать, сегодня только руки дошли.
Сегодняшнее правило:

Ни когда не ленитесь, когда пишите код.

И это не касается пресловутых комментариев, хотя и их очень обязательно надо записывать. А о тех моментах, когда чувствуешь, что надо что-то исправить/дописать..., а потом по лени махаешь рукой, думаешь, - ничего страшного. А потом эта фигня где ни будь да вылезет боком, так еще и материться будешь, когда не исправленный кусок в нескольких местах лежит... в общем, лучше сразу вызубрить это правило и всегда ему следовать, будет меньше проблем.

пятница, 7 января 2011 г.

Даты в названии.

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

Даты пишутся только цифрами, разделенные тире(дефисом)(или другим символом, если необходимо). Первым пишем год, вторым - месяц, третьим - день.
blablabla_2011-01-06.txt

Небольшая поправка:
В компилируемых файлах даты можно приписывать к расширению, дабы избегать их компиляции.
(blablabla.erl_2011-01-06).

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

среда, 5 января 2011 г.

Данные в JavaScript

Со временем выработалось важное правило:

Хранить данные в яваскриптах (javascript).

Особенно это актуально, когда на сайте часто применяется технология ajax и запрашиваются с сервера одинаковые(похожые) данные. Как выяснилось, гораздо легче управлять данными с помощью кода  яваскриптов, нежели поддерживать их серверным кодом.

понедельник, 3 января 2011 г.

Статистическая модель.

Речь пойдет об архитектуре MVC, а в частности о моделях.

Собственно правило:

Не писать статичных моделей.



Встретил я как-то модель, а там почти все методы были статичными. На первый взгляд, вроде бы ничего страшного и отвечает каким-то скрытым идеологическим принципам.
Все было хорошо, пока не появилась вторая модель, практически, клон первой, потом третья. И тут встал вопрос, а если еще таких штук 10?
И тут хватаются за голову, ептыть, и все переделывают на ООП, применяют наследование, выделяя базовый класс, а класс каждой модели уменьшается на 80%. И теперь не вызываются простые функции из коробочки, а методы объекта модели, содержащего и методы базового класса.


Не надо забывать, что статистические методы должны использоваться, как дополнительные функции класса для обработки мелких(не несущих логику) задач. Ведь такой подход, абсолютно блокирует расширение системы в целом.
ООП нам дано не для того, чтоб мы закрывали на него глаза и возвращались к функциональному программированию там, где оно ни к месту.