Search
Write a publication
Pull to refresh
41
0
Денис Смирнов @darthunix

Разработчик

Send message

О влиянии full-page writes

Reading time6 min
Views8.9K
Настраивая postgresql.conf, Вы могли заметить, что там есть параметр full_page_writes. Имеющийся рядом с ним комментарий гласит что-то о частичной записи страниц и люди, как правило, оставляют его в состоянии on — что не плохо, это я и объясню далее в данной статье. Тем не менее, очень полезно понимать что full_page_writes делает, так как влияние на работы системы может быть значительным.

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

Знакомство с хранилищем Ceph в картинках

Reading time11 min
Views335K
Облачные файловые хранилища продолжают набирать популярность, и требования к ним продолжают расти. Современные системы уже не в состоянии полностью удовлетворить все эти требования без значительных затрат ресурсов на поддержку и масштабирование этих систем. Под системой я подразумеваю кластер с тем или иным уровнем доступа к данным. Для пользователя важна надежность хранения и высокая доступность, чтобы файлы можно было всегда легко и быстро получить, а риск потери данных стремился к нулю. В свою очередь для поставщиков и администраторов таких хранилищ важна простота поддержки, масштабируемость и низкая стоимость аппаратных и программных компонентов.

Знакомьтесь: Ceph


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



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

Обучаемся самостоятельно: подборка видеокурсов по Computer Science

Reading time11 min
Views131K
image

Содержание


  1. Введение в Computer Science
  2. Структуры данных и Алгоритмы
  3. Системное программирование
  4. Распределенные системы
  5. Базы данных
  6. Объектно-ориентированный дизайн и разработка софта
  7. Искусственный интеллект
  8. Машинное обучение
  9. Веб-разработка и интернет-технологии
  10. Concurrency
  11. Компьютерные сети
  12. Разработка мобильных приложений
  13. Математика для программистов
  14. Теория информатики и языки программирования
  15. Архитектура компьютера
  16. Безопасность
  17. Компьютерная графика
  18. Работа с изображениями и компьютерное зрение
  19. Интерфейс Человек-Компьютер
  20. Вычислительная биология
  21. Прочее

Памятка по базовой верстке статьи для Хабра без использования Markdown-разметки

Reading time5 min
Views47K
На Хабре, по меркам старожилов, я совсем недавно, всего два года, но пишу активно, по возможности каждый день. Так вот, читая статьи, да и просто прокручивая ленту свежих публикаций как на Хабре, так и на GT, я понял, что многие просто не могут совладать с версткой текста и, как следствие, достаточно часто годные публикации хоронятся их же авторами из-за нечитабельности текста. Или отпугивает кривая КДПВ, или еще что произойдет.

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

Картинка Для Привлечения Внимания и выравнивание по левому краю


Так уж сложилось, что вся лента Хабрахабра выровнена по левому краю. По этой причине опытные авторы небольшие изображения оставляют слева или используют картинки шириной в 800-1000 px. Отдельно хочется заметить, что чуть ли не лучшим является соотношение КДПВ 2 к 1, т.е. изображения 800х400 px. Подобная пропорция позволяет SMM-щику соц. сетей не изгаляться с вашей картинкой (а то и вовсе искать что-то другое, более подходящее по размерам), а использовать оригинал, не нарушая задумки автора.
Читать дальше →

Файловая система, дешево и быстро

Reading time4 min
Views35K

Разработчикам часто приходится иметь дело с файлами, представляющими из себя древовидную структуру: XML, JSON, YAML, всякого рода языки разметки вроде Markdown или Org-mode. Облегчая в общем и целом нашу жизнь, такие файлы имеют склонность к бесконтрольному росту, в какой-то момент из решения превращаясь в проблему.


Стандартное решение этой проблемы — разбиение на меньшие файлы. Это, конечно, работает, но не всегда удобно.


Но существует и альтернатива, о которой — ниже.

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

Объединение нескольких разделов в один без потери информации

Reading time2 min
Views46K

Задача


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

Шишки и грабли Android-разработчика за 2 года

Reading time10 min
Views41K
image

Я ясно помню тот день в далеком 2014 году, когда я решил заняться программирование под Android. Это оказалось лучшим решением, которое я принял в моей жизни. Уже прошло почти два с половиной года, и за это время у меня возможность кое-чему научиться.

Когда я только начал, я не знал никого, кто мог бы научить меня, показать, как правильно нужно делать. И я совершил МНОЖЕСТВО ошибок, в так же потратил кучу времени на то, чтобы потом их исправить.

Полтора года спустя, мне выпал шанс поработать с очень талантливыми и опытными Android-разработчиками, которые направляли меня и помогли мне привести все в порядок. Эти две составляющие научили меня многому. Я понял, что надо ДЕЛАТЬ, а самое главное, что НЕ НАДО.

И уже какое-то время я, как могу, стараюсь помогать другим разработчикам — прямо или косвенно. Вот мои профили: StackOverflow и Github.

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

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

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

Reading time20 min
Views317K
Идеальная вёрсткаВы 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, даже если вы ничего не понимаете в вёрстке.

Ликбез по типизации в языках программирования

Reading time12 min
Views533K
image

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

В полной версии находится подробное описание всех видов типизации, приправленное примерами кода, ссылками на популярные языки программирования и показательными картинками.
Читать дальше →

Хочется взять и расстрелять, или ликбез о том, почему не стоит использовать make install

Reading time5 min
Views177K
К написанию сей заметки меня сподвигло то, что я устал делать развёрнутые замечания на эту тему в комментариях к статьям, где в качестве части инструкции по сборке и настройке чего-либо для конкретного дистра предлагают выполнить make install.
Суть сводится к тому, что эту команду в виде «make install» или «sudo make install» использовать в современных дистрибутивах нельзя.

Но ведь авторы программ в руководствах по установке пишут, что нужно использовать эту команду, возможно, скажете вы. Да, пишут. Но это лишь означает, что они не знают, какой у вас дистрибутив, и дистрибутив ли это вообще, может, вы вступили в секту и обкурилисьчитались LFS и теперь решили под свою хтоническую систему скомпилять их творение. А make install является универсальным, хоть и зачастую неправильным способом это сделать.

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

В дцатый раз про собеседования

Reading time12 min
Views45K
Про собеседования и найм сотрудников написано безумное количество книг, статей, блогов и прочих вместилищ информации. Да только информация эта до сих пор дошла не до всех в ней нуждающихся. Посему, хочется в очередной раз сказать пару слов о процессе найма.

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

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

Паттерны ООП в примерах для iOS

Reading time48 min
Views150K

От переводчика


Искали тут двух русскоязычных разработчиков — на iOS и на C++ под Windows. Видел десятки выполненных тестов. Разница в знании ООП между представителями двух платформ — огромная. На C++ обычно красивый расширяемый код, как само собой разумеющееся. На Objective C картина удручающая. Почти все iOS-кандидаты не знали ООП дальше своего носа NSString'ов и AppDelegate'ов.

Понятно, что плюсы учат по Страуструпу и «банде четырёх», а Objective C — больше по туториалам и Stack Overflow. Фастфуд-обучение не оставляет места на фундаментальные вопросы… Но такой разницы я не ожидал.

Поэтому я перевёл пост, в котором даны начальные сведения о шаблонах проектирования с примерами на iOS… «начальные»? Ага, значит, будет продолжение? Нет, не будет. Дальнейшие сведения вы получите из опыта, из попыток организовать процесс написания кода с помощью паттернов. Сначала не будет получаться, вероятно, фасад здания будет торчать из дымовой трубы, но потом придёт понимание, где какие приёмы реально помогают.

Качественная разработка ПО — творческий процесс, уникальный для каждой конкретной головы. Поэтому не существует общей инструкции: if (A and (B or C)) then use Pattern_N;
Как это нет инструкции? Что же делать?

27 open-source ништячков для iOS разработчика

Reading time7 min
Views24K

1. DZNEmptyDataSet


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

С этой библиотекой вам необходимо всего лишь соответствовать определённым протоколам и iOS сама позаботиться о просмотре коллекций и выделит необходимое особым шрифтом, в виде красивых сообщений для пользователя. Элементарное решение для каждого проекта под iOS.

image


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

Reading time8 min
Views187K
Электронику часто называют наукой о контактах. Многие знают, что нельзя скручивать между собой медный и алюминиевый провода. Медная шина заземления или латунная стойка для платы плохо сочетаются с оцинкованными винтиками, купленными в ближайшем строительном супермаркете. Почему? Коррозия может уничтожить электрический контакт, и прибор перестанет работать. Если это защитное заземление корпуса, то прибор продолжит работу, но будет небезопасен. Голая алюминиевая деталь вообще может постепенно превратиться в прах, если к ней приложить даже низковольтное напряжение.

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

В советских ГОСТах было написано почти всё о допустимых контактах металлов, но если изучение чёрно-белых таблиц из 1000 ячеек мелким шрифтом утомляет, то правильный ответ на «медный» вопрос — нержавейка, либо никелированная сталь, из которой, кстати, и сделан почти весь «компьютерный» крепёж. В эпоху чёрно-белого телевидения были другие понятия об удобстве интерфейса, поэтому для уважаемых читателей (и для себя заодно) автор приготовил цветную шпаргалку.

И, раз уж зашла речь о металлообработке, заодно автор привёл таблицу с популярными в электронике резьбами и соответствующими свёрлами, отобрав из объёмных источников наиболее релевантное по тематике портала. Не все же здесь слесари и металлурги, экономьте своё время.
Читать дальше →

Двухэтапная аутентификация — давай до свидания

Reading time5 min
Views78K
Двухэтапная аутентификация. Хорошая идея, но на практике только упрощающая получение доступа к вашим данным, т.к. включает в себя слишком много дополнительных участников, которые тоже могут иметь свои уязвимости.

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

Парсинг JSON — это минное поле

Reading time25 min
Views163K
image

JSON — это стандарт де-факто, когда заходит речь о (де)сериализации, обмене данными в сети и мобильной разработке. Но насколько хорошо вы знакомы с JSON? Все мы читаем спецификации и пишем тесты, испытываем популярные JSON-библиотеки для своих нужд. Я покажу вам, что JSON — это идеализированный формат, а не идеальный, каким его многие считают. Я не нашёл и двух библиотек, ведущих себя одинаково. Более того, я обнаружил, что крайние случаи и зловредная полезная нагрузка могут привести к багам, падениями и DoS, в основном потому, что JSON-библиотеки основаны на спецификациях, которые со временем развиваются, что оставляет многие вещи плохо или вообще не задокументированными.

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

Удалённое включение скриптов Mikrotik из Telegram

Reading time6 min
Views60K
На данную реализацию меня подтолкнул Александр Корюкин GeXoGeN своей публикацией "Удалённое включение компьютера бесплатно, без SMS и без облаков, с помощью Mikrotik".

И комментарий в одной из групп ВК Кирилла Казакова:
Да уж, совсем не секьюрно. Я бы лучше написал телеграм бота, который принимает только с моего аккаунта команды на включение.

Я решил написать такого бота.
Читать дальше →

Dribbble обзор №2 — наиболее интересные дизайны интерфейсов за последние 2 недели

Reading time5 min
Views18K
Всем привет. Минуло пару недель с момента выхода предыдущего обзора. Увы, за это время копилка Dribbble пополнялась вяло. Хотя в целом она пополнялась стабильно, но стоящего Вашего внимания материала крайне мало. Поэтому давайте вновь отмотаем таймер назад, теперь уже на две недели и посмотрим на различные концепты UX/UI артистов со всего мира. Я, как независимый обозреватель, выбрал 10 работ и расставил их в порядке возрастания качества исполнения.


Давайте посмотрим...

Information

Rating
Does not participate
Location
Бангкок, Таиланд, Таиланд
Date of birth
Registered
Activity