Search
Write a publication
Pull to refresh
0
0
Роман @Expellee

User

Send message

Разработка через страдание

Reading time6 min
Views55K
От переводчика:
Немало копий сломано в спорах о том, когда уместнее KISS, а когда DRY, когда лучше как можно быстрее и проще решить задачу любыми средствами, а когда стоит создавать красивые и универсальные абстракции. Натан Марц, автор популярного фреймворка Storm, используемого в Твиттере, предлагает свой вариант. Чтобы не создавать тонны бесполезного кода ради абстрактной универсальности и в то же время не позволять системе превращаться в кашу из костылей, он использует «разработку через страдание» (suffering oriented programming).



Однажды меня спросили: «Как ты решился пойти на такой страшный риск — писать Storm одновременно с запуском стартапа?» (Storm — фреймворк для распределённых вычислений в реальном времени). Да, пожалуй, со стороны создание такого крупного проекта для стартапа кажется крайне рискованным. Тем не менее, с моей точки зрения это вообще не было рискованным делом. Трудным, но не рискованным.

Я использую стиль разработки, который сильно уменьшает степень риска таких больших проектов, как Storm. Я называю этот стиль «разработкой через страдание». В двух словах: не занимайтесь реализацией технологий, от отсутствия которых вы не испытываете страданий. Этот совет применим как к большим, архитектурным решениям, так и к маленьким повседневным задачам. Разработка через страдание существенно уменьшает риск, гарантируя, что вы всегда работаете над чем-то важным, и что вы хорошо разобрались в предметной области, прежде чем вложить в решение много сил.

Я придумал такую мантру разработки: «Сначала сделай, чтобы было. Затем — чтобы было красиво. Затем — чтобы было быстро».
Читать дальше →

Автоконфигурация в облаке Amazon при помощи Chef-Solo

Reading time3 min
Views7.4K
Здравствуйте!

В этой статье я хочу рассказать об автоконфигурации в облаке. Для примера запустим ec2-инстанс, на котором «приготовится» WordPress.

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



Читать дальше →

Комплексная подготовка сайта к Retina

Reading time6 min
Views30K
К написанию этого материала меня побудила статья и назревшая необходимость адаптации нескольких своих сайтов к поддержке Retina-дисплеев. Под адаптацией я понимаю подготовку изображений высокого разрешения на страницах сайта.

Пожалуй лучшим способом адаптации на сегодняшний день является способ c background-image в CSS. Но он сложно применим к обычным изображениям в теге . Поэтому я решил определить для себя список необходимых мер по достижению результата в комплексе и продолжить поиски решения. Ниже описано два способа, каждый из которых применим к своим задачам. Показанные решения не претендуют на открытие, скорее это агрегация существующих способов, описанных ранее моими коллегами по цеху веб-разработок и небольшие собственные дополнения.
Читать дальше →

Ещё раз об изучении языков (часть 2)

Reading time13 min
Views136K

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

Перенос сайта(ов) без простоя и потери данных между выделенными серверами

Reading time4 min
Views39K
Казалось бы, что сложного перенести сайт на другой сервер? Наверно многие из нас копировали свои первые хоумпейджи с хостинга на хостинг в поисках лучшего, еще учась в школе или на первых курсах университета. Или вешая на уши лапши руководству, объясняли, что задача эта не решается мгновенно и сайт сутки работать не будет, ибо DNS такая штука…

Если в целом, ерундовая задача, правда? Но как сделать все идеально? Так, чтобы без простоев, чтобы не было расхождений в БД, чтобы не потерялись какие-нибудь файлики-аватарки-картинки, когда обновляется DNS запись IN A и у половины пользователей старый сайт, а у половины новый. А если это highload? Или сайт делало несколько поколений «лучших» программистов, считающих своим долгом создать новое подключение к БД в своем «модуле» для сайта. Наконец, если таких сайтов >10?

  • Скопировать файлы
  • Сделать дамб баз данных
  • Развернуть на новом сервере
  • На старом сервере заменить все коннекты к бд к новому
  • Настроить DNS
  • ...

Сколько это займет времени? Сколько драгоценных минут сайт не будет работать\не будет работать правильно?
Читать дальше →

Мой велосипед для сниппетов

Reading time1 min
Views23K
Сниппет — это небольшой кусок кода, который программист многократно использует в своей практике.
Сам я сниппетами пользуюсь не так давно, но на практике оценил их пользу. Бывали ситуации, когда нужен был фрагмент кода который я писал недавно, но вспомнить где он находится я не мог. Выручал Интернет, но у меня же должны быть собственные наработки. Да и не зря же я так долго их собирал. После недолгих поисков нашлось несколько интересных специализированных сервисов как раз для сниппетов. И так эти сайты мне понравились, что я решил сделать что-то похожее или даже лучше :)
Читать дальше →

Мобильные приложения: HTML5 против нативного кода

Reading time6 min
Views28K
В августе этого года Facebook выпустила новую версию своего приложения для iOS. Оно стало полностью нативным. Это событие привело к новому раунду дебатов по поводу преимуществ нативных приложений по сравнению с HTML5-приложениями. Я тоже хочу высказаться по этому поводу.

Общественное мнение в данном случае весьма поляризовано. Недавно я участвовал в одной дискуссии. Она началась с обеспокоенность одного человека тем, что его компании теперь придется разрабатывать клиент для Microsoft Surface в дополнение к Android и iPad. А закончилась дискуссия высказыванием другого: «А можно использовать HTML5 и разом получить клиента на все три платформы».

Марк Андреессен (Marc Andreessen), влиятельный в сети человек, сказал: «Приложения будущего — это веб-приложения. Все будет жить в сети. Нативные мобильные приложения на платформах вроде iOS и Android — это промежуточный шаг на пути к полностью мобильной сети. Этот временный этап может продолжаться очень долго потому что сети до сих пор ограничены. Но если вы позволите мне сделать смелое предположение, что однажды у нас будет повсеместно доступно высокоскоростное беспроводное подключение к сети, то очевидно, что в конце концов все придет к веб-приложениям. Потому что технология хочет, чтобы все было именно так.»

Похоже, что большинство людей, смотря на эту ситуацию, видит только черное и белое. Я склонен видеть оттенки серого.

Вопрос



Главный вопрос: насколько толстыми должны быть клиенты?

Читать дальше →

Git up и все все все

Reading time2 min
Views26K
Комманда git up (аналог svn up) добавляется так:
git config --global alias.up '!(git add . && git stash && git pull --rebase >&2) | grep -v "No local changes to save" && git stash pop'

git up при надобности ныкает все ещё незакоммиченные изменения в stash, обновляет локальную ветку до свежайшей и восстанавливает локальные изменения назад. В том числе переносит ещё неотправленные локальные коммиты в самый конец, делая историю линейной как в Subversion, т.е. избегая лишних веток и merge-коммитов.
Читать дальше →

Рекомендации по интерфейсу форм

Reading time6 min
Views33K

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

Основные рекомендации и ввод данных


  • Стремитесь к краткости.
  • Убедитесь, что в форме используется один язык (обороты, термины).
  • Если на странице находится только форма и ничего кроме нее, то при загрузке страницы стоит ставить фокус на первое поле формы, это позволит сэкономить немного времени (страница поиска, входа, регистрации).
  • Поддерживайте ясный путь заполнения формы.
  • Избегайте вторичных действий, если это возможно.
  • В противном случае четко разделяйте основное и дополнительные действия.
  • Выравнивайте основное действие так же как и поля формы, это упрощает восприятие формы.
  • Цветная подложка у главной кнопки сделает её более видимой.
  • Отключайте кнопку «Отправить» после того как пользователь на нее нажал, это позволит избежать двойной отправки данных.
  • Еще лучше — показывайте индикатор отправки.

Читать дальше →

Краудфандинг без использования сторонних сервисов на примере Star Citizen

Reading time1 min
Views19K


На момент написания этой заметки на проект Star Citizen пожертвовано уже почти 1 миллион долларов. Каждый раз, когда я обновляю страницу сбора средств на Star Citizen, цифра становится всё больше. Скоро сумма станет поистине космической, и Крису Робертсу (Chris Roberts) придется выполнить все данные обещания. Для сбора средств он мог бы использовать и Kickstarter, но его игра доказывает, что без этого можно и обойтись.
Читать дальше →

Унаследованные базы данных в Rails 3

Reading time3 min
Views4K
Основано на реальных событиях, произошедших(происходящих) с реальными людьми.

Если вы работаете с унаследованными базами данных, у вас не всегда есть возможность менять имена полей, когда поля начинают конфликтовать с Ruby on Rails. Самый простой пример, это поле с именем 'class' в одной из ваших таблиц. Рельсам это действительно не нравится. Это как теща, которой не нравится твоя новая прическа, и она обращает на это внимание при любой возможности.
В виду отсутствия драматургического таланта, переводчик не смог, породить более яркую метафору, создающую общую ассоциацию, в противоположность частной

Решение

Makefile для самых маленьких

Reading time4 min
Views814K
Не очень строгий перевод материала mrbook.org/tutorials/make Мне в свое время очень не хватило подобной методички для понимания базовых вещей о make. Думаю, будет хоть кому-нибудь интересно. Хотя эта технология и отмирает, но все равно используется в очень многих проектах. Кармы на хаб «Переводы» не хватило, как только появится возможность — добавлю и туда. Добавил в Переводы. Если есть ошибки в оформлении, то прошу указать на них. Буду исправлять.

Статья будет интересная прежде всего изучающим программирование на C/C++ в UNIX-подобных системах от самых корней, без использования IDE.

Компилировать проект ручками — занятие весьма утомительное, особенно когда исходных файлов становится больше одного, и для каждого из них надо каждый раз набивать команды компиляции и линковки. Но не все так плохо. Сейчас мы будем учиться создавать и использовать Мейкфайлы. Makefile — это набор инструкций для программы make, которая помогает собирать программный проект буквально в одно касание.
Читать дальше →

Как я один запустил проект про стартапы, и как он развивался на практике

Reading time8 min
Views21K
Пару лет назад был настоящий бум контентных сайтов, где есть что-то интересное по одной конкретной теме. Что-то выросло, что-то нет — например, точно загнулись сотни сайтов для фотографов, очень хорошо подрос Хабр — а я в это время развил и выгодно продал два проекта.

Третий захотелось сделать с учётом полученного опыта — и я снова начал с нуля.

Сегодня я готов рассказать что и как было сделано — и хочу попросить у вас обратной связи по проекту.
Читать дальше →

Как я решил потихоньку учить питон, а попал в дебри CS188.1x Artificial Intelligence

Reading time7 min
Views98K

Привет Хабр, или введение


image

Расскажу свою небольшую предысторию.

Как то в очередной раз надоело ковырять очередной контроллер, схему и pcb, и удрученный средней по рынку зарплатой рядового электронщика решил — хочу опять в программисты.

Не могу сказать, что я уже был в программистах, но образование получил 3 года назад по специальности «Информационные системы и технологии» в Военмехе. А судьба занесла в схемотехники-электронщики еще во времена универа. Раньше спасали частые командировки на объекты (пока молод и холост — интересно), а последний год все окончательно надоело.
Читая Хабр, выбрал себе Python.
Читать дальше →

Видеозапись доклада «Вся соль одностраничных приложений» с 404fest

Reading time2 min
Views18K
Федя Шумов и Арсений Заречнев, фронт-енд разработчики из команды Островка, рассказали о
«Всей соли одностраничных приложений» на 404fest в Самаре.

Содержание доклада:


Читать дальше →

Опыт создания системы навигации на Ajax

Reading time5 min
Views59K
Меня всегда интересовало, почему при разработке сайтов, так редко в системе навигации используется Ajax? Ведь преимущества по-моему очевидны! Сайт на аякс работает в разы быстрее любого обыкновенного сайта, и даже если учитывать кэш браузера, это заметно.
Читать дальше →

Овертаймим? А как насчет результатов?

Reading time6 min
Views88K
Вашему вниманию перевод статьи старшего преподавателя Гарвардской Школы Бизнеса Роберта Позена (Robert Pozen), They Work Long Hours, but What About Results?, опубликованной в The New York Times 6 октября 2012.

image
5 часов вечера. Работая быстро, вы завершили все свои задачи и хотите домой. Но пока никто из ваших коллег не ушел, что заставляет вас остаться еще на пару часов, попусту тратя время в интернете и перечитывая почту. Зато никто не подумает что вы — лентяй.

Суровая реальность заключается в том, что эффективность зачастую не вознаграждается. Я часто сталкивался с этим когда работал в адвокатской конторе в Вашингтоне. Благодаря моему опыту я мог быстро ответить на вопросы клиентов, сэкономив время себе и им. Но так как моя контора (как и большинство адвокатских контор) имела почасовую оплату, моя эффективность работала против меня.
Читать дальше →

[Html 5] SharedWorker: примеры использования

Reading time2 min
Views13K
В Html 5 уже развели целый зоопарк «фич», и, думаю, уже осталось мало людей, которые знают весь «Html 5» полностью. Думаю, меньше процента из вас слышали про некие «SharedWorker»-ы.

Читать дальше →

Попытка номер раз создать почти идеальный htaccess

Reading time14 min
Views250K
    - Google выше ранжирует сайты, которые загружаются быстрее.
    - Если на eBay или Amazone увеличить время загрузки страниц на 9% они теряют 1% прибыли.
    - Сделать свой сайт быстрее, чтобы сэкономить на клиентском трафике и на числе обращений к серверу.


.htaccess — наш герой


Профессионалы знают, что такое htaccess.
Тем кто собираются уйти с народ.ру на php-хостинг только предстоит узнать, что это такое.
Те кто только что установил свои первые jooml'у или wordpress срочно должны узнать о нашем герое — htaccess

Зачем нам .htaccess ?


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

Или другой пример. Скажем ваш ресурс начинает набирать популярность, но переезжать на выделенный сервер ещё рано, а мощностей VPS уже не хватает. Вас очень может выручить htaccess.

А ещё htaccess может решить некоторые вопросы с безопасностью вашего сайта.

А ещё…

Полезные советы по htaccess с разжевыванием для новичков

mysqlnd

Reading time2 min
Views49K
mysqlnd — расширение PHP, которое является драйвером для работы с MySQL по умолчанию в PHP 5.4. Оно работает напрямую с MySQL сервером, а значит, MySQL клиент, а также оверхед на работу с ним, больше не требуется!

image

Читать дальше →

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity