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

Ruby on Rails

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

Авария Boeing 737 Max глазами разработчика ПО

Время на прочтение22 мин
Количество просмотров105K
Представляю вашему вниманию перевод статьи «How the Boeing 737 Max Disaster Looks to a Software Developer» Грега Трэвиса. Речь пойдет о том, как желание Боинга сэкономить и «срезать углы» для коммерческой выгоды, а также культура «некомпетентности и неэтичности» в сообществе разработчиков привело к гибели 346 человек. Я не во всем разделяю позицию автора (в частности, я считаю, что человеческий фактор куда большее зло, чем ПО), но с основными доводами сложно не согласиться.

Ниже очень много букв. Если читать лень, а ознакомиться с темой хочется, то на Хабре есть первая, более короткая версия этой статьи в переводе Вячеслава Голованова, с ней можно ознакомиться здесь.
Читать дальше →
Всего голосов 79: ↑72 и ↓7+65
Комментарии241

Как мы внедряли Sentry. Часть 1 — установка и настройка

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров13K

Привет! Я Виталий, DevOps в LEADS.SU, в этой статье хочу рассказать как мы внедряли Sentry self-hosted и приводили к продакшен состоянию, которое должно отвечать требованиям высокодоступности - нельзя терять события ошибок. При этом не хотелось заморачиваться с кластеризацией для разных инструментов (вроде redis, postgresql, clickhouse, kafka и прочее). И тут мы вспомнили про распределенную сеть доставки логов из нескольких узлов td-agent и решили попробовать.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии2

Худшие практики разработки и архитектуры

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров20K
image

Я собрал худшее из худшего! Оказалось, что хороших практик — море, и разбираться в них долго, а вот плохих, реально плохих, — считаные единицы.

Понятно, что плохие практики не отвечают на вопрос: «А как делать-то?» — но они помогают быстро разобраться в том, как не делать.

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

Итак, мой любимый антишаблон — поток лавы. Начинается всё просто: в новый проект можно добавить код из старого проекта копипастой. Он там делал что-то полезное, пускай делает почти то же самое полезное в новом проекте. Вот только нужно закомментить один кусок, а в другом месте — чуть дописать. Примерно через три переноса без рефакторинга образуются большие закомментированные участки, функции, которые работают только с частью параметров, сложные обходы вроде «выльем воду из чайника, выключим газ, и это приведёт нас к уже известной задаче кипячения чайника» и так далее.

Это если команда одна. А если разработчики на пятом проекте новые, то начинается самое весёлое — этот сталактит надо ещё прочитать.

Очень часто я вижу лава-код в проектах аутсорсинговых компаний, потому что они используют свою кодовую базу по разным заказчикам как такой своеобразный иннерсорс. А «междисциплинарный» код как раз хорошо обрастает отключаемыми участками и переопределяемыми функциями.
Читать дальше →
Всего голосов 43: ↑43 и ↓0+43
Комментарии28

Убираем JavaScript. Как при помощи htmx красиво использовать HTML и уменьшить объем кода

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

htmx — инструмент для создания сложных и интерактивных веб-приложений на HTML, альтернатива клиентскому рендерингу на Javascript. В этой статье рассказываем, как библиотека помогает переиспользовать элементы на сервере, сократить объем кода на Javascript и отказаться от сборки.

Читать далее
Всего голосов 20: ↑15 и ↓5+10
Комментарии23

10 феерических выступлений Стива Джобса

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

На прошлой неделе случилось то, что хотелось оттянуть на как можно больший срок, но что все равно было неизбежным. Самый инновационный предприниматель Америки, а может, и мира, Стив Джобс оставил пост CEO компании Apple.
Некоторым везунчикам в жизни предоставляется шанс работать над одним революционным устройством. Стив Джобс – человек, который совершил сразу несколько революций в цифровом мире, – по праву может считаться успешным человеком. 
В этой статье собраны 10 наиболее известных и символичных выступлений, которые характеризуют жизнь и карьеру мастера. 
Читать дальше →
Всего голосов 332: ↑254 и ↓78+176
Комментарии86

Эволюция Python-программиста

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

Начинающий


  1. def factorial(x):
  2.     if x == 0:
  3.         return 1
  4.     else:
  5.         return x * factorial(x - 1)
  6. print factorial(6)


Программирующий уже год (Ранее изучавший Pascal)


  1. def factorial(x):
  2.     result = 1
  3.     i = 2
  4.     while i <= x:
  5.         result = result * i
  6.         i = i + 1
  7.     return result
  8. print factorial(6)

Читать дальше →
Всего голосов 167: ↑143 и ↓24+119
Комментарии38

Доброкнижка про HTML5 от Google

Время на прочтение1 мин
Количество просмотров2.2K
Пока в интернетах идут войны на тему HTML5, убьет он Flash или нет, компания Google выпустила онлайн книгу 20 Things I Learned About Browsers & The Web. И это действительно книга!

Ребята создали веб-приложение, напоминающее детскую книгу, ее можно листать, оставлять закладки, а посвящена она веб-технологиям.
Читать дальше →
Всего голосов 121: ↑111 и ↓10+101
Комментарии90

Интересные особенности старых ноутбуков ч.1

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

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

Начну, пожалуй, с одной из самых интересных конструкционных особенностей: ноутбук–бабочка!
(осторожно! много фотографий)
Читать дальше →
Всего голосов 191: ↑186 и ↓5+181
Комментарии70

Инвентаризация в компании: Установка GLPI

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



Пришло время и в нашей компании провести учет компьютерной техники. Компания растет, расширяется, и памяти IT отдела плюс нескольких XLS-файлов уже не хватает для быстрого и достоверного ответа что у нас и где находится.

Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии10

Используем portdowngrade на примере

Время на прочтение3 мин
Количество просмотров1.8K
Возникла необходимость откатить один из портов FreeBSD, а именно eAccelerator, с версии 0.9.6.1 до 0.9.5.3. Связано это с удалением пользовательских функций кэширования начиная с версии 0.9.6-rc1.

Для решения подобной задачи как раз подойдет утилита portdowngrade.
Без неё мы должны выполнить следующие действия:
  • Отследить изменения порта в CVS репозитории FreeBSD.
  • По комментариям найти все файлы предыдущего релиза (пример ревизий Makefile для eAccelerator).
  • Загрузить эти файлы и правильно их расположить в дереве портов FreeBSD.
  • Используя стандартные механизмы управления портами установить порт.

Утилита portdowngrade сама анализирует историю заданного порта и показывает список изменений. Остается лишь выбрать, какую из предыдущих версий порта мы хотим установить. Таким образом, portdowngrade автоматизирует всю, описанную выше, последовательность действий, от осмотра CVS репозитория, до копирования нужных файлов в дерево портов.

Рассмотрим как происходит откат порта к предыдущей версии на примере eAccelerator.

Читать дальше...
Всего голосов 9: ↑7 и ↓2+5
Комментарии0

Вариант простой backup-системы на Python, Bash и Git

Время на прочтение5 мин
Количество просмотров5.1K
Недавно появилось некоторое чувство дискомфорта когда я приступаю к работе. Чувство было не то чтобы сильным, но сосредоточиться мешало. Думал, лень. Оказалось, что все чуть сложнее :) Ноуту, за которым я работаю, уже почти 3 года; стоит на нем Mac OS X 10.6.1, но яблок на нем нигде не нарисовано, и система периодического резервного копирования на нем отсутствует как класс. В общем, не было ощущения стабильности и надежности, так что я занялся этим вопросом вплотную. Собственно, далее я опишу результат, который мое подсознание удовлетворил :) Может быть, кому-то что-нибудь будет полезно.

Резервное копирование кое-чего кое-куда с кое-какими фичами
Всего голосов 9: ↑6 и ↓3+3
Комментарии7

Избавляемся от подпапок в Applications

Время на прочтение2 мин
Количество просмотров5K
Как известно, на маке приложения представляют собой пакет (папку с расширением .app), в котором лежат все необходимые ресурсы и исполняемый файл. В большинстве случаев такой пакет самодостаточен и, при перемещении в произвольное место, приложение будет запускаться и работать. Однако некоторые приложения представляют собой не просто .app, а папку, в которой кроме него лежат другие необходимые приложению файлы. Этим чаще грешат портированные приложения, но есть и некоторые родные маковские, находящиеся в подпапках (камень в сторону iWork и Microsoft Office).
Такая нестандартная структура порождает два небольших неудобства:
  1. для запуска приложения требуется на 1 клик больше
  2. папка не имеет значка приложения, вследствие чего его труднее найти визуально
В идеале все приложения должны быть доступны по одному клику, а подпапок в папке Applications по крайней мере не должно быть видно.
Как этого добиться смотрим под катом.
Всего голосов 18: ↑12 и ↓6+6
Комментарии22

Браузерный зоопарк

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

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

Hello world! Меня зовут Слава, я работаю верстальщиком в агентстве Coalla. Эта статья не о разжигании холивара и рассуждения о том, какой браузер лучше, как бы всем легко жилось без Internet Explorer’a, а мой недавний полезный опыт по установке всех необходимых браузеров и их версий на одну операционную систему, а именно на Microsoft Windows 7 Ultimate x64.
Читать дальше →
Всего голосов 210: ↑122 и ↓88+34
Комментарии236

50 цитат о программировании всех времён

Время на прочтение6 мин
Количество просмотров159K
Перевёл после прочтения комментариев к статье «О ненависти к C++». В цитатах можно найти ответы на большинство возникших там вопросов.

50. Программирование сегодня — это гонка разработчиков программ, стремящихся писать программы больше и с лучшей идиотоустойчивостью, и вселенной, которая пытается создавать больших и лучших идиотов. Пока вселенная побеждает.
— Rick Cook

49. Lisp — это не язык, а строительный материал.
— Alan Kay

48. Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.
— Edward V Berard
Читать дальше →
Всего голосов 344: ↑336 и ↓8+328
Комментарии136

Фильтруем rss Хабра через Yahoo.Pipes

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


В комментах часто жалутся на обилие нежелательного контента на главной. Посты же не могут нравится всем сразу. Duh…
Вывод один — надо фильтровать. Кэп подсказывает Интуиция подсказывает, что фильтровать мы будем с помощью Yahoo.Pipes.

С картинками.

Как и почему им - под катом
Всего голосов 72: ↑63 и ↓9+54
Комментарии31

Яндекс.Директ. Как пилят бюджеты: картинки из жизни

Время на прочтение2 мин
Количество просмотров1.4K
В фильме «Jurassic Park» циничный доктор Ян Малькольм в исполнении Джеффа Голдблюма рассказывает про тиранозавра: "… он будет есть тебя, а ты в это время еще будешь жив". Пример ниже – отличается от страшилки лишь тем, что жертва остается живой и невредимой. Но только физически. Чего нельзя сказать о его деньгах.

Статистика рекламной кампании за 2 месяца клиента (тематика: туризм) одного крупного рекламного агентства (название РА озвучивать не будем, оно и так на слуху). Сертифицированные, в кавычках, специалисты рекламного агентства настроили кампанию таким образом, что в результате клиент за 2 месяца работы получил бездарные затраты почти в 90000 рублей практически с нулевой эффективностью (99% объявлений транслировались ниже третьей позиции справа).
Читать дальше →
Всего голосов 43: ↑20 и ↓23-3
Комментарии28

Проект 903: «Лунь»

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

Когда-нибудь мое любопытство меня в могилу сведет. Пока же оно приводит к новым постам на Хабре. На картинке изображен единственный в своем роде боевой экраноплан-ракетоносец «Лунь», аналогов которому нет нигде в мире. Представляет он собой нечто среднее между кораблем и самолетом; чем-то похож на суда на воздушной подушке, но превосходит их по всем характеристикам в разы. Чудо инженерной мысли, способное одним залпом потопить любой корабль (вообще любой!), сейчас гниет в доке на Каспийском море.
Читать дальше →
Всего голосов 223: ↑200 и ↓23+177
Комментарии156

Корпоративная адресная книга из Google Contacts

Время на прочтение1 мин
Количество просмотров9.4K
Не так давно мы озаботились проблемой распространения контактной информации среди сотрудников компании. Так как на наш домен установлены инструменты Google Apps, включающие модуль Contacts, самым разумным было использовать его возможности под наши нужды.
Результатом должна была стать заполненная информация в директории домена, доступная всем его участникам:

Читать дальше →
Всего голосов 43: ↑39 и ↓4+35
Комментарии27

в KDE 4 убрали kdict

Время на прочтение1 мин
Количество просмотров575
в KDE4 убрали kdict, в связи с неактивностью автора.
плазмоид не совсем то, что хотелось бы.(да и не заработал он у меня). пришлось выкручиваться своими силами.
плодить лишние сущности не хотелось.
поэтому идем по unix-way(маленькие программки которые делают свое дело ну и пайпы естественно)
меня интересовала возможность быстро перевести слово для этого его достаточно выделить. и слово будет в буфере.
и по Meta+K вызывается вот такой вот скрипт:

#!/bin/bash
TEXT=`xclip -f -o`
kdialog --passivepopup "`dict $TEXT|head -n 50`"


простенько и со вкусом
xclip -f -o
выкидывает нам содержимое буфера обмена на stdout
kdialog умеет много разного
dict $TEXT собственно опрашивает dict сервер
а head -n 50 ограничивает количество строк в 50.
Всего голосов 10: ↑8 и ↓2+6
Комментарии0

How-to install gitosis (мануал с учётом проблем возникающих при установке) + интеграция в redmine

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

gitosis — программное обеспечение для хостинга Git репозиториев


image

Установка:


Появился скрипт авто установки пока тестируется
sudo apt-get install python-setuptools git-core -y
mkdir ~/src
cd ~/src
git clone git://github.com/sc0rp1us/gitosis-tools.git
cd gitosis-tools/gitautoinstall
sudo bash main

Дальше следуем инструкциям скрипта


Но вернёмся к статье
Для начала установим необходимые компоненты для запуска gitosis:
  • Для debian & ubuntu выполните следующие команды от пользователя root

apt-get update
apt-get upgrade
apt-get install python-setuptools git-core -y
cd ~/src
git clone git://eagain.net/gitosis.git
cd gitosis
python setup.py install



Далее зайдём в учётную запись через которую будем управлять gitosis'om (назовём её gitadmin), выгрузим дистрибутив и установим его

Настройка:


Теперь нам нужно будет создать пользователя который будет владеть хранилищем(имя может быть любым, но я предпочитаю использовать просто git), к тому же на одном сервере может быть несколько аккаунтов владеющих хранилищами, такому аккаунту не нужен пароль, но необходим действующий shell иначе SSH откажется с ним работать:
P.S. вы конечно можете использовать уже существующую учётную запись, но по соображениям безопасности, крайне не рекомендуется этого делать
Читать дальше →
Всего голосов 15: ↑9 и ↓6+3
Комментарии7
1
23 ...

Информация

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