Как стать автором
Обновить
16
0
linch @linch

Пользователь

Отправить сообщение

Правильная работа с датой и временем в Ruby on Rails

Время на прочтение14 мин
Количество просмотров31K
Всем привет! Меня зовут Андрей Новиков и в последнее время я работаю над проектом по разработке приложения, которое используется в разных частях нашей страны и автоматизирует работу людей. В каждом конкретном часовом поясе нашему приложению необходимо правильно получать, сохранять и отображать время, причём как в прошлом, так и в будущем – например, рассчитать начало рабочей смены и так же правильно его отображать: отсчитать время до конца смены, показать, сколько люди ехали до точки назначения и определить, уложились ли они в норматив, в также многое-многое другое.



За те уже несколько лет, что я пишу на Ruby on Rails, мне не приходилось сталкиваться с подобными проблемами — до этого все мои приложения работали в одном часовом поясе. А тут неожиданно пришлось немало попотеть, отлавливая самые разные ошибки и пытаясь выяснить, как же работать с датой и временем так, чтобы их в дальнейшем избежать.

В результате, сегодня мне есть, чем с вами поделиться. Если вы регулярно встречаетесь с тем, что время сохраняется или отображается некорректно с характерным разбросом в несколько часов (3 часа для Москвы), какие-то ночные записи перекочёвывают на соседние дни, а время упорно отображается не так, как хотят пользователи, и вы не знаете, что со всем этим делать — добро пожаловать под кат.
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии16

Мой топ-100 книг по Программированию, Компьютерам и Науке: часть 1

Время на прочтение3 мин
Количество просмотров132K
Недавно сайт Fog Creek взял у меня интервью, и один из вопросов был связан с моими любимыми книгами по программированию, кодированию и разработке программ. Мне этот вопрос запомнился потому, что я давно себя считаю заядлым книжным ботаником. Книжный ботаник я потому, что безумно люблю книги о науке, компьютерах и программировании. Каждые несколько месяцев я уделяю день или два исследованию недавно изданной литературы и покупке наиболее понравившихся экземпляров. Я мог бы вечно разговаривать о своих любимых книгах. Ведь у меня их так много.

Меня настолько заинтересовал вопрос о книгах, что я решил начать новую серию статей на своём сайте catonmat о моих топ-100 книгах о программировании, программном обеспечении, науке, физике, математике и компьютерах. В каждой статье я буду размещать по пять книг, ведь разбивать огромное задачи на маленькие подзадачи — это самый простой способ их решать (GTD — get things done).

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

image
Читать дальше →
Всего голосов 32: ↑27 и ↓5+22
Комментарии26

Восстановление зрения

Время на прочтение2 мин
Количество просмотров45K
Однажды у меня появились видеозапись лекций Жданова.
Так были предложены упражнения для глаз. Я решил попробовать выполнять их, чтобы проверить их эффективность.
Ниже вы увидите сами упражнения.

Читать дальше →
Всего голосов 162: ↑114 и ↓48+66
Комментарии180

Спать мало, но правильно?

Время на прочтение7 мин
Количество просмотров897K
Навеяно этим постом от юзера case. Пост не новый, и на главную он не попал.
Но я вот наткнулся на него сегодня и решил написать кое-что о сне. Уверен, что это будет полезно многим хабравчанам, да и случайным читателям тоже.
Читать дальше →
Всего голосов 713: ↑670 и ↓43+627
Комментарии420

Облегчение жизни пользователю Safari на iPhone

Время на прочтение3 мин
Количество просмотров8.8K
Облегчение жизни пользователю Safari на iPhone.

В моей прошлой статье, мы разбирали, как за короткий промежуток времени возможно изготовить версию сайта, адаптированную для Apple iPhone.Сегодня я продолжаю свою статью. Сейчас мы рассмотрим некоторые мета теги (и не только), которые облегчат жизнь не только посетителю сайта, но и разработчику веб-проекта.



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

Читать дальше →
Всего голосов 92: ↑83 и ↓9+74
Комментарии43

Теперь Google Analytics работает Асинхронно

Время на прочтение3 мин
Количество просмотров5.4K
Новый код выглядит вот так:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);

(function() {
 var ga = document.createElement('script');
 ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
   'http://www') + '.google-analytics.com/ga.js';
 ga.setAttribute('async', 'true');
 document.documentElement.firstChild.appendChild(ga);
})();

Это значит, что гугл.аналитикс больше не замедлит загрузку вашего сайта :)
UPD: То есть, он скачивал свой 24кб ga.js во время загрузки страницы, теперь он это может делать после…
Но после первой загрузки, он обычно закэширован и на всех остальных сайтах используется один и тот же :)

Материалы по теме:
Под катом бонус, код для русских поисковиков
Всего голосов 85: ↑73 и ↓12+61
Комментарии83

10 юзабилити-преступлений, которых вы не должны совершать

Время на прочтение2 мин
Количество просмотров4.4K
На стадии дизайна и разработки мы должны учитывать прописные истины и основные концепции для улучшения юзабилити сайта. В этой статье описываются классические, но непростительные ошибки в области веб-дизайна и способы их решения.

Преступление #1: В формах метки не связаны с полями ввода


crime1
Использование атрибута «for» позволит пользователям кликать по метке, для выбора соответствующего поля формы. Это особенно важно для чекбоксов и радиокнопок — увеличить область клика.
Читать дальше →
Всего голосов 325: ↑289 и ↓36+253
Комментарии160

Как авторизуются люди в Рунете

Время на прочтение2 мин
Количество просмотров1.5K
image
По следам этого поста, публикую данные о ситуации в Рунете. В качестве оператора «общей» аутентификации в данном случае вышла система Loginza. Данные собраны за три полных месяца и за половину августа.

Первое место занимает великое рунетовское зло (пока что незаменимое лично для меня, ввиду его повсеместности – где бы еще я за два часа смог найти внедорожник для съемок или фотографа на бекстейдж?) vkontakte.ru. Количество заходов под этим аккаунтом составило почти 14 тыс. за исследуемый период, что в процентном отношении дает около 45%.
Читать дальше →
Всего голосов 65: ↑51 и ↓14+37
Комментарии73

Как готовить презентации. Мини-курс для программиста

Время на прочтение5 мин
Количество просмотров18K
imageУ меня, как и у многих других программистов, есть слабость: я очень люблю различные планерки, на которых обсуждаются новые проекты и идеи. Все презентации в моем представлении делятся на 3 вида: муторное чтение цифр успеваемости начальника транспортного цеха, демонстрации системы из рук и презентация идей и решений при помощи построителя презентаций. Если с демонстрацией системы из рук программисты знакомы по сдаче лабораторных в университетах, а монотонно читающие тексты «коты баюны», постепенно вымирают как класс, то с презентациями у нашего брата явный напряг. Менеджеры еще прошли либо просмотрели курсы «молодого построителя презентаций», то молодежь ограничилась книгами типа «Уроки ПоверПоинта за 24 часа» или хуже того, один раз увидели и самотыком изучили сей продукт буржуазной экономики. Поэтому, просмотр их презентаций вызывает приступ тошноты, не говоря уже о том, что их часто перебивают, вызывая на «живое» общение. Ориентироваться в их презентациях невозможно и зачастую бессмысленно. А ведь для того чтобы создавать красивые презентации нужно немного. Попробую составить список «наставлений для программистов», что делать нельзя и что нужно.
Читать дальше →
Всего голосов 88: ↑74 и ↓14+60
Комментарии36

Лекция о пиве

Время на прочтение1 мин
Количество просмотров1.1K

Лекция кандидата по химии для студентов медиков. о механизмах влияния пива.

p.s. Как так получилось, что представители IT ассоциируются с Пивом?
Всего голосов 137: ↑90 и ↓47+43
Комментарии136

Droider Chart. Выпуск 13

Время на прочтение1 мин
Количество просмотров441
Всем привет,

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



В обзоре замечены программы:


Читать дальше →
Всего голосов 50: ↑41 и ↓9+32
Комментарии22

Советы и рецепты начинающему Android программисту

Время на прочтение12 мин
Количество просмотров78K
Добрый день, уважаемые хабраюзеры.

В данной статье я хочу поделиться своим опытом разработки под Android.
Требования к функционалу разрабатываемого продукта породили различные технические задачи, среди которых были как тривиальные, разжеванные во множестве блогов, так и крайне неоднозначные, с неочевидным решением. Я столкнулся с массой вещей, незнакомых мне, как .NET разработчику. Узнал о существовании инструментов, которые значительно упрощают жизнь. Думаю, что каждый начинающий андроидовец проходит похожий путь. Я мог бы сэкономить до трети времени, потраченного на разработку, поиск и эксперименты, имея такую статью.

Поэтому в данном посте я предлагаю вашему вниманию сборник рецептов и советов, которые помогут быстрей и правильней создать Ваше приложение.
В бой!
Всего голосов 46: ↑35 и ↓11+24
Комментарии60

Как мы учили английский язык в японской школе на Филиппинах

Время на прочтение14 мин
Количество просмотров63K
Привет! Зимой этого года мы прожили месяц на Филиппинах, изучая английский язык.


(Учитель Latisha передает привет читателям хабрахабра)


(все разнообразие русскоязычной части школы на тот момент: слева направо Алекс (сотрудник школы и по совместительству студент), студенты Женя, Женя и Рома)

Продолжение под катом
Всего голосов 66: ↑52 и ↓14+38
Комментарии29

Много бесплатных книг по программированию

Время на прочтение7 мин
Количество просмотров345K
Читать дальше →
Всего голосов 202: ↑192 и ↓10+182
Комментарии42

Адаптивные email'ы

Время на прочтение4 мин
Количество просмотров42K
image


Сегодня пользователи все чаще читают электронные письма на мобильных устройствах. Каково бывает просмотр большого HTML-email'а на телефоне? Приходится много масштабировать и скроллить, в целом читать становится очень неудобно. Поэтому и письма электронной почты следует делать адаптивными.
Читать дальше →
Всего голосов 63: ↑54 и ↓9+45
Комментарии18

Реализация выборки, кэширования и отрисовки фотографий на карте

Время на прочтение13 мин
Количество просмотров10K

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



Так как в нашем сервисе было очень много фотографий и посылать запросы к БД при каждом изменении окна просмотра слишком ресурсозатратно, логично было разбить карту на участки, в которых хранилась бы информация об уже извлеченных данных. Эти участки по вполне понятным причинам имеют прямоугольную форму (хотя вариант с гексагональной сеткой тоже рассматривался). Так как при больших масштабах участки становятся более сферообразными, то элементы сферической геометрии и инструменты для работы с ней также были рассмотрены.


В данной статье были затронуты следующие проблемы:


  • Хранение и выборка фотографий из БД и помещение их в серверный кэш (SQL, C#, ASP.NET).
  • Загрузка необходимых фотографий на стороне клиента и помещение их в клиентский кэш (JavaScript).
  • Перерасчет фотографий, которые нужно скрыть или отобразить при каждом изменении окна просмотра.
  • Элементы сферической геометрии.
Всем интересующимся добро пожаловать под кат
Всего голосов 24: ↑20 и ↓4+16
Комментарии6

Оптимизация сайта для планшетов

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

Ускорение набора текста с помощью добавления спецсимволов


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

Читать дальше →
Всего голосов 105: ↑97 и ↓8+89
Комментарии24

Rails: Хватит отмазываться, начинаем BDD-ить!

Время на прочтение9 мин
Количество просмотров32K

Кто здесь?


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

11:24:21 PM Michael: ну хз, надо пробовать
11:24:24 PM Michael: наверное так лучше
11:24:27 PM Michael: даже я думаю наверняка
11:24:36 PM Michael: но пока меня че-то останавливает
11:24:38 PM Michael: лень наверное :)

Знакомо? «Не хочется разбираться? Нет времени?» Тогда читаем дальше. В статье расскажу, как настроить свое любимое рельсовое окружении на разработку с подходом BDD и начать новую жизнь (опционально).
Поехали!
Всего голосов 88: ↑77 и ↓11+66
Комментарии38

Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

Время на прочтение20 мин
Количество просмотров314K
Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
Вы заказчик. Как убедиться, что работа выполнена качественно?
Как оценить качество вёрстки?

Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

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

Требования должны были быть такие, что соблюсти их легче, создавая качественную вёрстку, а не говнокод. Я составлял такой чек-лист в течении полутора лет. За последние полгода в него не добавилось ничего. Значит самое главное учтено.

Итак что же это за список?

Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

История обновлений:
  • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
  • 2015/08/10: актуализирован список исключений для CSSLint
  • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
  • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
  • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
  • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
  • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
  • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
  • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
  • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.
Всего голосов 335: ↑318 и ↓17+301
Комментарии244

Pivotal Tracker

Время на прочтение3 мин
Количество просмотров28K
image
Мы все прекрасно понимаем, что не существует универсальной системы управления проектами, которая бы подходила для всех случаев. Выбор системы целиком и полностью зависит от Ваших нужд. Если вы не нуждаетесь в репозитариях, и для общения Вам достаточно комментариев в тикетах, а работаете Вы над проектром по «гибким» методологиям, то возможно одним из лучших вариантов будет — Pivotal Tracker.

Пост в первую очередь предназначен для тех, кто не знаком с Pivotal Tracker, или тех кто считает его сложным и непонятным.
Читать дальше →
Всего голосов 55: ↑46 и ↓9+37
Комментарии27

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность