Pull to refresh
0
0

User

Send message

Пример простой автоматизации letsencrypt

Reading time8 min
Views74K
image

Удостоверяющий центр «Let’s Encrypt» (далее просто letsencrypt) вышел из беты пару месяцев назад, пообтерся в реальных условиях, избавился от детских болезней и оброс различными клиентами. И к этому моменту выдал 5 миллионов сертификатов. Самое время внедрять, т.е. получать сертификаты на свои домены и обновлять их в автоматическом режиме. Но как внедрить так, чтобы приблизиться к любимому админскому «поставил и забыл»? Чтобы было просто получать новые сертификаты, а старые при этом обновлялись автоматом? Ну и как добавить немного безопасности в этот процесс?
Ответ под катом.
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments38

Опыт перехода с Sublime на Vim

Reading time22 min
Views76K


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

Я достаточно долгое время использовал sublime (около 4 лет) в качестве основной среды разработки, но в последнее время кое-что изменилось: я освоил слепой 9-ти пальцевый метод печати. В тот момент я начал понимать людей, которым неудобно тянуться к мышке или стрелочкам. Убирать пальцы с «домашних» позиций стало неестественно и непродуктивно. Тогда я включил vintage. Проблема, вроде бы, стала неактуальна, но чего-то не хватало. Не помню, что заставило меня пересесть за vim, но мне всегда нравилось, как в нем выделяются фигурные скобки (MatchParen) и как выглядит курсор :). Vim я пробовал и до этого, когда правил конфиги на сервере, правда, вся «магия» ограничивалась переходом в режим вставки и успешным сохранением/выходом из редактора.
Читать дальше →
Total votes 62: ↑55 and ↓7+48
Comments123

Linux-контейнеры дома: зачем и как

Reading time8 min
Views120K



Рассуждения


При упоминании словосочетания «контейнерная виртуализация», многим на ум сразу же приходят Virtuozzo и OpenVZ, а также Docker. Ассоциируется же это все, в первую очередь, с хостингом, VPS и другими подобными вещами.

Дома, на личных компьютерах многие используют виртуальные машины: в основном, пожалуй, Virtualbox. Как правило, для того, чтобы работая под Linux, иметь под рукой Windows или наоборот. Однако, при наличии множества родственных Linux-операционок, я стал замечать, что использование виртуальных машин — это, мягко говоря, нерационально.
Читать дальше →
Total votes 64: ↑64 and ↓0+64
Comments84

Топ 6 оптимизаций для netty

Reading time5 min
Views26K
Всем привет. Эта статья продолжение 10к на ядро с конкретными примерами оптимизаций, которые были проделаны для повышения производительности сервера. С написания первой части прошло уже 5 мес и за это время нагрузка на наш продакшн сервер выросла с 500 рек-сек до 2000 с пиками до 5000 рек-сек. Благодаря netty, мы даже не заметили это повышение (разве что место на диске уходит быстрее).

Blynk load
(Не обращайте внимание на пики, это баги при деплое)

Эта статья будет полезна всем тем кто работает с netty или только начинает. Итак, поехали.

Нативный Epoll транспорт для Linux


Одна из ключевых оптимизаций, которую стоит использовать всем — это подключение нативного Epoll транспорта вместо реализации на java. Тем более, что с netty это означает добавить лишь 1 зависимость:

<dependency>
   <groupId>io.netty</groupId>
   <artifactId>netty-transport-native-epoll</artifactId>
   <version>${netty.version}</version>
   <classifier>linux-x86_64</classifier>
</dependency>

и автозаменой по коду осуществить замену следующих классов:

  • NioEventLoopGroup → EpollEventLoopGroup
  • NioEventLoop → EpollEventLoop
  • NioServerSocketChannel → EpollServerSocketChannel
  • NioSocketChannel → EpollSocketChannel

Дело в том, что java реализация для работы с не блокирующими сокетами реализуется через класс Selector, который позволяет вам эффективно работать с множеством соединений, но его реализация на java не самая оптимальная. Сразу по трем причинам:

  • Метод selectedKeys() на каждый вызов создает новый HashSet
  • Итерация по этому множеству создает iterator
  • И ко всему прочему внутри метода selectedKeys() огромное количество блоков синхронизации

В моем конкретном случае я получил прирост производительности около 30%. Конечно же, эта оптимизация возможна только для Linux серверов.
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments6

Мониторинг выполнения задач в IPython Notebook

Reading time2 min
Views36K
Хотел бы поделиться простым, но полезным инструментом. Когда много работаешь с данными, часто возникают примитивные, но долгие операции, например: «скачать 10 000 урлов», «прочитать файл на 2Гб, и что-то сделать с каждой строчкой», «распарсить 10 000 html-файлов и достать заголовки». Долго смотреть в зависший терминал тревожно, поэтому долгое время я использовал следующий гениальный код:
def log_progress(sequence, every=10):
    for index, item in enumerate(sequence):
        if index % every == 0:
            print >>sys.stderr, index,
        yield item


Эта функция прекрасна, больше года она кочевала у меня из задачи в задачу. Но недавно я заметил в стандартной поставке Jupyter виджет IntProgress и понял, что пора что-то менять:

Читать дальше →
Total votes 42: ↑39 and ↓3+36
Comments11

Linux-контейнеры: когда контейнеров становится больше

Reading time5 min
Views15K


В прошлой статье я вкратце рассказал о том, что такое контейнерная виртуализация, LXC в частности, зачем это нужно и как это все по-быстрому настроить.

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

Читать дальше →
Total votes 15: ↑12 and ↓3+9
Comments8

Неизвестный Smalltalk

Reading time10 min
Views31K


Уважаемые читатели хабра. Прежде всего я хочу объяснить, что обзор языка Smalltalk делает в корпоративном блоге FLProg. Дело в том, что и сама программа FLProg и сайт программы написаны на этом замечательном языке. Его возможности и огромная скорость разработки на нём позволяют мне одному поддерживать и постоянно увеличивать функциональность как сайта, так и программы. Если интересно, как мне это удается – прошу под кат.
Подробности
Total votes 58: ↑50 and ↓8+42
Comments190

Мягкие ссылки на страже доступной памяти или как экономить память правильно

Reading time13 min
Views160K
image
Все java-разработчики, рано или поздно, встречаются с пресловутой ошибкой OutOfMemoryError. 
После этой встречи мы начинаем более бережно относится к используемой памяти, экономить ее. Начиная с версии 1.2 в Java появился пакет java.lang.ref.* с классами SoftReference, WeakReference, PhantomReference. Далее я расскажу вам о том, как помогут эти классы в борьбе с OutOfMemoryError. И что более интересно, приведу реальные примеры их использования. Начнем.
Читать дальше →
Total votes 67: ↑62 and ↓5+57
Comments23

Заглянем за кулисы разработки: подборка исходных кодов классических игр

Reading time10 min
Views82K
Обожаю заглядывать за кулисы. Мне интересно, как делаются вещи. Мне кажется, что большинству людей это тоже интересно.

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

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

Многие игры после выпуска исходников были улучшены и дополнены сообществом – я намеренно даю ссылки только на оригинальные исходники. Так что, если вас вдруг интересуют апгрейды – они могут существовать.

Многие игры были рассмотрены на сайте Fabien Sanglard. Если вам интересны подробности их работы, то пожалуйте к нему.

Можно заметить, что многие игры принадлежат id Software/Apogee. Совпадение? Не думаю. id славится открытостью и привычкой выпускать исходники. Старые коммерческие игры уже не имеют ценности и были бы потеряны – не лучше ли, чтобы кто-то учился чему-то полезному на их основе?

Итак, приступим (в хронологическом порядке):
Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments12

Сделай сам: MSc Computer Science на уровне топ американских университетов из дома

Reading time12 min
Views161K

Вступление


Давно хотел написать статью про образование в Computer Science, но руки не доходили. Решил все-таки это наконец сделать. Итак, о чем пойдет речь? Речь о том, что из себя представляет диплом MSc Computer Science топовых университетов США (во всех подробностях, включая основные курсы, книги и проекты) и как ему соответствовать.

Почему именно MSc? Это — некая развилка: с одной стороны после MSc — вы уже готовый к жизни инженер (да, речь идет о инженерной подготовке, как мне кажется это самое больное место в нашей системе образования), с другой — можно спокойно идти по пути PhD. Как известно, в PhD программу можно попасть и не особо умея программировать — особенно это касается теоретического Computer Science. С другой стороны найти работу программиста тоже дело не очень сложное, и часто не требует мощного образования. Но достигнув уровня MSc — вы получаете возможность разбираться как во всех новый идеях в Computer Science, так и возможность их воплотить в практику. То есть с одной стороны круто разобраться в каком-нибудь deep learning и сделать в нем что-то новое, а также взять и написать свою операционную систему (кто так сделал?). Причем вы не зажаты в рамки узкой специализации (если конечно продолжаете учиться). То есть вы теперь — универсальный солдат, готовый на все.

Надеюсь что эта статья будет полезна:
1. Студентам, которые хотят соответствовать высоким стандартам топ вузов США, или собирающиеся туда в аспирантуру по Computer Science
2. Профессионалам, которые хотят закрыть «дыры» и пробелы
3. Может кто-то из преподавателей возьмет на заметку для своих курсов.
4. Студентам, аспирантам американских вузов — хотелось бы тоже получить фидбэк, особенно касается последних трендов в образовании

Что же здесь будет написано? Минимум философии и общих мыслей: конкретная программа undergraduate и graduate курсов, конечно из дисциплин наиболее мне близких. Все курсы были лично прочувствованы на собственной шкуре, по этому и пишу. (Я пытался записаться на все интересные курсы, которые были, но мой основной упор — системное программирование, базы данных и искусственный интеллект. Отсюда конечно некий bias, но пытаюсь предложить более-менее универсальную программу).
Читать дальше →
Total votes 86: ↑81 and ↓5+76
Comments64

Программа курса и материалы по Scala

Reading time14 min
Views48K
Добрый день.

Меня зовут Головач Иван, я практикующий Java Tech Lead с опытом в программировании 10+ лет (Java EE, J2ME, C, C++, M-language, Delphi), который перешел на Scala.

Я подготовил и прочитал как обычные курсы по программированию (Java Core + Junior Java Developer), так и спецкурсы (Multicore Programming for JVM (раз и два)).

В данный момент я стартую спецкурс по Scala и в этом топике хочу поделиться материалами, которые я нашел наиболее интересными/информативными (курс готовился более года).
Читать дальше →
Total votes 34: ↑30 and ↓4+26
Comments32

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 1 из 6

Reading time7 min
Views398K

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Постановка задачи


Цель этого цикла статей — показать, как работает OpenGL, написав его (сильно упрощённый!) клон самостоятельно. На удивление часто сталкиваюсь с людьми, которые не могут преодолеть первоначальный барьер обучения OpenGL/DirectX. Таким образом, я подготовил краткий цикл из шести лекций, после которого мои студенты выдают неплохие рендеры.

Итак, задача ставится следующим образом: не используя никаких сторонних библиотек (особенно графических) получить примерно такие картинки:



Внимание, это обучающий материал, который в целом повторит структуру библиотеки OpenGL. Это будет софтверный рендер, я не ставлю целью показать, как писать приложения под OpenGL. Я ставлю целью показать, как сам OpenGL устроен. По моему глубокому убеждению, без понимания этого написание эффективных приложений с использованием 3D библиотек невозможно.
Читать дальше →
Total votes 198: ↑196 and ↓2+194
Comments120

Жонглирование. Теория. Практика

Reading time5 min
Views40K
Настороженно отношусь к непрофильным топикам, но решил написать этот по следующим причинам:
  • У жонглирования есть своя теория — стройная и математически привлекательная!
  • Мы живем не только работой. Жонглирование — отличное развлечение и разминка после долгого сидения за компом.
  • В пятницу приятно немного расслабиться и почитать не очень серьезные статьи. К тому же, будет чем заняться на выходные, особенно если у вас не было определенных планов.

Теория


Утверждать, что жонглирование — это последовательность бросков, все равно, что сказать, что музыка — это просто последовательность нот. Нельзя назвать это неправдой, но любой, хоть немного знакомый с музыкальной теорией, возмутится последним определением — столь поверхностным и недалеким.
Читать дальше →
Total votes 252: ↑242 and ↓10+232
Comments45

Каталог статей по OS Inferno

Reading time2 min
Views21K
Практически каждая статья по OS Inferno вызывает вопросы из серии «что это такое и для чего оно нужно». Эти вопросы вполне уместны, но начинать каждую статью с ответа на этот вопрос невозможно — по крайней мере я не готов ответить на этот вопрос одним абзацем, а на развёрнутый ответ и целой статьи мало. Поэтому в данной статье будет поддерживаться полный каталог всех статей об ОС Инферно на хабре, и в новых статьях можно будет просто ссылаться на этот каталог.

Обзоры OS Inferno


Первое знакомство с OS Inferno … закончилось ничем, т.к. сработал стереотип «раз это ОС, значит она должна быть полноценной альтернативой традиционным десктопным или серверным ОС». Стыдно.

Второе знакомство с OS Inferno … прошло намного удачнее — удалось избавиться от стереотипов и понять, как и для чего можно начинать использовать эту ОС.

Поверхностный обзор OS Inferno … ну очень поверхностный, скорее просто список фич а не обзор.

Архитектура OS Inferno — 1,
Архитектура OS Inferno — 2,
Графика в Inferno,
Limbo,
3 сущности! … этот цикл из 5-ти статей и есть обзор системы.
Читать дальше →
Total votes 25: ↑18 and ↓7+11
Comments11

Сервис поиска русскоязычных книг для Kindle

Reading time1 min
Views26K
Kindle
После того как у меня появился Kindle 3 стала проблема наполнения его книгами на всем нам понятном русском языке. Сама книжка поддерживает кириллицу с коробки, но вот русской раскладки в ней не предусмотрено. Отличная возможность пользоваться встроенным в книгу браузером частично страдает из-за отсутствия русской раскладки.

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

За один вечер была найдена подходящая экранная клавиатура написанная на JavaScript и оптимизирована под экран Kindle. Зарегистрировано доменное имя kin3lib.ru для нашего проекта. Сервис перебрасывает поисковый запрос набранный на виртуальной клавиатуре в библиотеку Флибуста, где можно спокойно закачать затем книгу в ее родной mobi формат. В дальнейшем можно реализовать выбор библиотек на которых производить поиск, но, к сожалению, я нашел только одну, которая позволяет скачивать книги в формате mobi. Если кто знает еще такие библиотеки пишите мне.

Мне будет приятно выслушать мнения хабравчан о таком сервисе, а также кто и каким образом решает данную проблему.
Total votes 52: ↑47 and ↓5+42
Comments29

История игрушки. Поле Чудес

Reading time11 min
Views298K
Случилось это в городе, закрытом от шпионов, цыган и бед социалистической экономики. В Советском Союзе было ровно 10 таких городов, повязанных атомным секретом.

Жизнь мальчиков с математическими способностями в атомных городах была предопределена — школа с пятерками по алгебре и геометрии, мех-мат столичного университета, возвращение в систему, квартира через год, кандидатская степень в 40 лет, ВАЗ 2103 к пятидесяти годам, звание доктора, гараж, шесть соток, четыре квадратных метра.

Бесконечные размышления о математическом моделировании ядерных взрывов разрывали мальчикам мозг. Мозг можно было отвлечь тремя способами — алкоголем, азартными играми и спортом. Секс и музыка помогали не всегда.

Pole Chudes для iPhone

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

Читать дальше →
Total votes 933: ↑923 and ↓10+913
Comments311

Ставим Dingux на Dingoo A320 из под Win, Mac и Linux для всех типов загрузчика экрана

Reading time3 min
Views7.7K


Итак, недавно мне пришла моя долгожданная Dingoo и естественно мне тут же захотелось опробовать Dingux. По просьбам фанатов dingoo, о проблемах с которыми мне пришлось столкнуться и о их решении по порядку под катом.
Поехали!
Total votes 50: ↑46 and ↓4+42
Comments64

FAQ по Gemei A330

Reading time8 min
Views11K
В последнее время на хабре участились публикации о замечательной портативной консоли gemei a330. Довольно немало хабрапользователей уже обзавелись этим чудом среди китайских медиаплееров. Посему не будет лишним составить небольшой список часто задаваемых вопросов и ответов на них, который будет дополнятся по мере возникновения новых вопросов и появления ответов на них.


В. Что же такое gemei a330?
О. Dingoo A320 — портативное мультимедийное устройство, совмещающее в себе функции аудиоплеера, видеоплеера, FM-радио и эмулятора игровых консолей. Выпускается компанией Shenzhen Dingoo Digital Co., Ltd. с марта 2009 года. Является главным конкурентом продукции компании GamePark Holdings.
То же самое справедливо и для gemei a330 за исключением даты выпуска и производителя.
Девайс производит компания Gemei Digital Technology Co., Ltd. где-то с прошлого года. От своей предшественницы а320 отличается более мощным процессором (CC1800 ARM 11 600 Mhz заниженный до 500 Mhz против Ingenic JZ4732, 336 МГц (понижена с номинальных 360 МГц, разгоняется до 433 МГц)) и количеством ОЗУ, превышающим динговский аж в два раза (64 против 32х). Другой процессор одновременно самая сильная и самая слабая сторона консоли. Он безусловно быстрее, но обилие софта от динги на гемейку не пойдет.
Подробнее про gemei можно почитать здесь . Или посмотреть видеообзор.


Итак, владельцы уже состоявшиеся и потенциальные, прошу под кат.
Читать дальше →
Total votes 55: ↑49 and ↓6+43
Comments143

Немного о биологии и биоинформатике

Reading time8 min
Views9.2K

Введение


Думаю, все пользователи Хабра знакомы с успехами человечества в области микроэлектроники, подавляющее большинство — покорения космоса, немалая часть — физики. Но почти никто не знает о том, что прямо сейчас в биологии происходит революция, которая изменит нашу жизнь в ближайшие несколько десятилетий не меньше, чем распространение компьютеров. Более того, эта революция напрямую связана с успехами в построении мощных вычислительных систем.Конечно же, какие-то «круги по воде» расходятся. Но далеко не каждый способен сопоставить истерию в СМИ относительно ГМО, слово «рекомбинантный» на пузырьке с интерфероном или инсулином и невнятные (в России) слухи о неком 23andme. На самом деле, все эти явления связаны одной нитью. И распутывать эту нить лучше с самого начала.
Читать дальше →
Total votes 129: ↑124 and ↓5+119
Comments124

Полезность Kindle 3

Reading time1 min
Views2.3K
Совсем недавно приобрел себе в пользование Amazon Kindle 3 (WiFi).
Удобнейшая штука оказалась, жаль что не купил раньше.
Вообще-то это мой первый опыт использования электронных читалок, но уже сейчас могу сказать, что буду использовать такие устройства в дальнейшем.
Впрочем все восторги и разочарования по поводу этих устройств описаны в сотнях обзорах, так что повторятся я не буду.
Речь не об этом!
Буквально через пару часов использования решил для себя что эта штука может очень сильно экономить мое время.
Читать дальше →
Total votes 75: ↑65 and ↓10+55
Comments70

Information

Rating
Does not participate
Location
Самара, Самарская обл., Россия
Registered
Activity