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

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

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

LINKa смотри. Система выбора карточек при помощи айтрекера и не только

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


Вспомним кто я?


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

С того момента много что изменилось, умерла девочка, для которой я написал эту программу, проект стал называться LINKa. Я сделал много программ для других форм двигательного поражения. Понял, что потерял волну волонтеров, возникшую при прошлом хаброхайпе, так как Open source проекты надо мейнтейнить.

Но тему разработки программ для коммуникации я не оставил. И на деньги из “гранта Дудя” разработал новый коммуникатор, который позволяет выбирать карточки взглядом. И мне нужна помощь дописать несколько фич. Стек: C#, WPF.
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии2

О языке С и производительности

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


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

Но как можно считать себя профессионалом в каком-либо (высокоуровневом) языке, если даже не знаешь, как именно работает процессор, как он выполняет вычисления, эффективным ли способом? Сегодня автоматическое управление памятью становится главной проблемой в большинстве высокоуровневых языков, и многие программисты подходят к её решению без достаточной теоретической базы. Я уверен, что знание низкоуровневых процессов сильно помогает в разработке эффективных высокоуровневых программ.
Читать дальше →
Всего голосов 153: ↑141 и ↓12+129
Комментарии269

Катар: центр мира для пересадок и ночной город

Время на прочтение11 мин
Количество просмотров32K
Мало кто в мире авиации сделал столько же в текущем кризисе, сколько Qatar Airways. Поэтому я хочу рассказать немного про их базу и то, как вообще так получилось, что Доха стала воротами в мир.


Это постоянно работающий фонтан. Если вы читали «Дюну», то примерно понимаете, насколько это шокировало поначалу местных жителей богатством в стране, где есть только пустыня.

Катарцы в 2018 оказались самыми богатыми людьми мира. Считали по доле ВВП на гражданина, то есть можно сделать вывод, что граждан в стране мало. Точнее, очень мало. Дело в том, что на небольшом автономном полуострове газа и нефти прямо много. И в шельфе рядом тоже. При том, что страна размером меньше Калиниградской области (и в 4 раза меньше МО). Поскольку коренных катарцев всего около четверти миллиона, дальше выиграть звание самой богатой страны мира было довольно просто.

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

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

Задержитесь на секунду и попробуйте перечислить: что бы вы сделали и в каком порядке?
Всего голосов 101: ↑96 и ↓5+124
Комментарии167

Deep dive into PostgreSQL internal statistics. Алексей Лесовский

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

Расшифровка доклада 2015 года Алексея Лесовского "Deep dive into PostgreSQL internal statistics"


Disclaimer от автора доклада: Замечу что доклад этот датирован ноябрем 2015 года — прошло больше 4 лет и прошло много времени. Рассматриваемая в докладе версия 9.4 уже не поддерживается. За прошедшие 4 года вышло 5 новых релизов в которых появилась масса новшеств, улучшений и изменений относительно статистики и часть материала устарела и не актуальна. По мере ревью я постарался отметить эти места чтобы не вводить тебя читатель в заблуждения. Переписывать же эти места я не стал, их очень много и получится в итоге совсем другой доклад.


СУБД PostgreSQL — это огромный механизм, при этом состоит этот механизм из множества подсистем, от слаженной работы которых напрямую зависит производительность СУБД. В процессе эксплуатации обеспечивается сбор статистики и информации о работе компонентов, что позволяет оценить эффективность PostgreSQL и принять меры для повышения производительности. Однако, этой информации очень много и представлена она в достаточно упрощенном виде. Обработка этой информации и ее интерпретация порой совсем нетривиальная задача, а "зоопарк" инструментов и утилит запросто поставит в тупик даже продвинутого DBA.

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

Нефтянка для инженеров, программистов, математиков и широких масс трудящихся, часть 1

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


Хочешь знать, как и откуда добывают нефть, и зачем для этого нужны математики, инженеры и программисты? Это первая часть из серии статей, представляющих собой очень быстрое обзорное введение в предметную область для будущих математиков-программистов, которым предстоит решать задачи, связанные с моделированием нефтедобычи и разработкой инженерного ПО в области сопровождения нефтедобычи. Для того, чтобы понять всё, что здесь написано, не требуется каких-то специальных знаний: достаточно только здравого смысла и школьного “арсенала” математики и физики. Зато работа в этой области, в отличие от какого-нибудь документооборота, происходит на стыке математических, естественно-научных и технических дисциплин и полна интересных кросс-дисциплинарных задач.
Читать дальше →
Всего голосов 32: ↑28 и ↓4+34
Комментарии40

Linux tuning to improve PostgreSQL performance. Илья Космодемьянский

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

Расшифровка доклада 2015 года Ильи Космодемьянского "Linux tuning to improve PostgreSQL performance"


Disclaimer: Замечу что доклад этот датирован ноябрем 2015 года — прошло больше 4 лет и прошло много времени. Рассматриваемая в докладе версия 9.4 уже не поддерживается. За прошедшие 4 года вышло 5 новых релизов PostgreSQL вышло и 15 версий ядра Linux. Если переписывать эти места, то получится в итоге другой доклад. Но здесь рассмотрен фундаментальный тюнинг Linux для PostgreSQL, который актуален и сейчас.


Всего голосов 17: ↑17 и ↓0+17
Комментарии5

Как PostgreSQL работает с диском. Илья Космодемьянский

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

Расшифровка доклада 2014 года Ильи Космодемьянского "Как PostgreSQL работает с диском".


Часть поста, конечно, устарела, но здесь рассмотрены фундаментальные моменты PostgreSQL при работе с диском, которые актуальны и сейчас.


Диски, память, цена, процессор — в таком порядке смотрят на характеристики сервера админы, покупающие машину под базу данных. Как эти характеристики взаимосвязаны? Почему именно они?


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


"Железо", настройки операционной системы, файловой системы и PostgreSQL: как и для чего выбирать хороший setup, что делать, если конфигурация "железа" не оптимальна, и какие ошибки могут сделать бесполезным самый дорогой RAID-контроллер. Увлекательное путешествие в мир батареек, "грязных" и "чистых" страниц, хороших и плохих SSD-дисков, покрасневших графиков мониторинга и ночных кошмаров системных администраторов.

Всего голосов 12: ↑10 и ↓2+9
Комментарии1

Исключения C++ через призму компиляторных оптимизаций

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


На дворе 21-й век, непроизводительная реализация обработки C++ исключений на основе setjmp/longjmp уже в прошлом. Современные компиляторы, такие как gcc и clang, используют продвинутую реализацию C++ исключений, называемую zero-cost exception handling. Но насколько действительно это zero-cost?

На конференции C++ Russia 2019 Piter Роман Русяев рассказал, каким образом С++ исключения оказывают влияние на компиляторные оптимизации: какие оптимизации не могут быть применены в случае, если функция может бросить исключения, а какие оптимизации становится труднее применять.

Роман — разработчик компиляторов C/C++ и компиляторов нейронных сетей для специализированных платформ, таких как Neural Processing Unit, работает в Samsung.

Под катом текстовая расшифровка и видео доклада.
Всего голосов 37: ↑37 и ↓0+37
Комментарии15

Оптимальный путь новичка в мире C++/Qt

Время на прочтение10 мин
Количество просмотров109K
Часто задаваемый начинающими программистами вопрос – какие материалы читать для повышения своего профессионального уровня? В таком, наиболее общем виде, ответить на данный вопрос невозможно. Это зависит от текущих знаний и умений человека, от его специализации, от задач, которые возникнут перед ним в будущем. Однако я попытаюсь ответить на данный вопрос для того направления программистской деятельности, в котором лучше всего разбираюсь – в создании кроссплатформенных сложных desktop-приложений. Приложений уровня и класса PhotoShop, VisualStudio, MS Word. Таких приложений, в которых с точки зрения программиста возникает больше количество разноплановых задач:

  • Отрисовка классического «офисного» GUI типа кнопок, прогресс-баров, виджетов, анимации.
  • Отрисовка любой нестандартной графики типа непрерывно движущихся графиков из миллионов точек.
  • Работа с базами данных
  • Работа с сетью
  • Работа с реестром операционной системы
  • Работа с принтером
  • Быстрое (в том числе параллельное) выполнение сложных вычислительных задач.
  • И многое, многое другое.

Наборов платформ и фреймворков, которые позволяют эффективно строить подобные приложения, не так уж много. В свое время, попробовав разные платформы, программисты в моей организации уверенно остановились на следующей связке: язык С++ и платформа Qt. Как показало время, этот выбор не подвел. Вот именно с оглядкой на этот выбор я начну излагать тот набор материалов, которые я рекомендую к изучению начинающими программистами, если они хотят стать настоящими гуру в этом направлении.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+13
Комментарии21

Что нужно знать про арифметику с плавающей запятой

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


В далекие времена, для IT-индустрии это 70-е годы прошлого века, ученые-математики (так раньше назывались программисты) сражались как Дон-Кихоты в неравном бою с компьютерами, которые тогда были размером с маленькие ветряные мельницы. Задачи ставились серьезные: поиск вражеских подлодок в океане по снимкам с орбиты, расчет баллистики ракет дальнего действия, и прочее. Для их решения компьютер должен оперировать действительными числами, которых, как известно, континуум, тогда как память конечна. Поэтому приходится отображать этот континуум на конечное множество нулей и единиц. В поисках компромисса между скоростью, размером и точностью представления ученые предложили числа с плавающей запятой (или плавающей точкой, если по-буржуйски).

Арифметика с плавающей запятой почему-то считается экзотической областью компьютерных наук, учитывая, что соответствующие типы данных присутствуют в каждом языке программирования. Я сам, если честно, никогда не придавал особого значения компьютерной арифметике, пока решая одну и ту же задачу на CPU и GPU получил разный результат. Оказалось, что в потайных углах этой области скрываются очень любопытные и странные явления: некоммутативность и неассоциативность арифметических операций, ноль со знаком, разность неравных чисел дает ноль, и прочее. Корни этого айсберга уходят глубоко в математику, а я под катом постараюсь обрисовать лишь то, что лежит на поверхности.
Читать дальше →
Всего голосов 245: ↑242 и ↓3+239
Комментарии75

Включаем поддержку TLS v1.3 в Nginx на примере Debian 9

Время на прочтение6 мин
Количество просмотров38K
Всем доброго времени суток!

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

image

Наверняка на Хабре найдутся те, кто уже 100 раз это делал, поэтому данная статья — больше для новичков или для тех, кто хочет найти готовое решение в виде мануала, не тратя много времени на поиски, как я, например. Вспомнив, что давно не писал на Хабре и поставив статье метку «tutorial», принялся за дело.
Читать далее
Всего голосов 26: ↑20 и ↓6+14
Комментарии11

Как ошибка невозвратных затрат может разорить разработчика игр

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

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

Но что, если вы не хотите признавать, что функцию или проект нужно менять или даже отказаться от них полностью?

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

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

Экономисты называют это ошибкой невозвратных затрат или ошибкой «Конкорда» (в память о разработке сверхзвукового пассажирского самолёта «Конкорд»). Это иррациональное усиление, при котором человеку кажется, что он вложил очень много денег/времени/энергии в работу и её прекращение окажется пустой тратой ресурсов. Однако в реальности решение продолжать не должно быть никак связано с предыдущими тратами; самое важное — это понять, оправдают ли себя дополнительные усилия.
Всего голосов 30: ↑30 и ↓0+30
Комментарии16

Постигаем Си глубже, используя ассемблер

Время на прочтение8 мин
Количество просмотров55K
Вдохновением послужила эта статья: Разбираемся в С, изучая ассемблер. Продолжение так и не вышло, хотя тема интересная. Многие бы хотели писать код и понимать, как он работает. Поэтому я запущу цикл статей о том, как выглядит Си-код после декомпиляции, попутно разбирая основные структуры кода.
Читать дальше →
Всего голосов 54: ↑50 и ↓4+46
Комментарии31

Отладка злого бага в рантайме Go

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

Я большой поклонник Prometheus и Grafana. Поработав SRE в Google, я научился ценить хороший мониторинг и за прошедший год предпочитал пользоваться комбинацией этих инструментов. Я использую их для мониторинга своих личных серверов (black-box и white-box мониторинг), внешних и внутренних событий Euskal Encounter, для мониторинга клиентских проектов и много другого. Prometheus позволяет очень просто писать кастомные модули экспорта для мониторинга моих собственных данных, к тому же вполне можно найти подходящий модуль прямо из коробки. Например, для создания симпатичной панели имеющихся метрик Encounter-событий мы используем sql_exporter.

Читать дальше →
Всего голосов 102: ↑96 и ↓6+90
Комментарии25

Биороботы нашего времени — избавляемся от рутины вместе с Telegram. Реальный кейс без фантазий

Время на прочтение5 мин
Количество просмотров28K
В интернетах не прекращается хайп вокруг чат-ботов (в частности, Telegram) благодаря шуму в СМИ, неоспоримых достоинствах платформы, политике продвижения, средствам разработки и т.д.

Смотришь новости: ну жизни нет без чат-ботов!
Да если их не будет, поезда с рельс сойдут, упадут самолеты, погибнут люди от тоски, когда не смогут найти картинки с котиками.

Но давайте положим руку на сердце: когда последний раз вы что-то заказывали в интернет-магазине через чат-бот?

Кто все эти люди, которые заказывают разработку ботов для своих магазинов?


Типичный чат-бот магазина Vasya Limited:
>> автоматизирует поток водопад заявок из 5 человек в день,
>> сливает 4 из 5 заявок, кровью добытых через Яндекс-Директ,
>> если повезет, человек найдет номер телефона и позвонит,
>> но, вероятней всего, «Эээ, куда жать?», а потом закроет и уйдет гуглить дальше.

Чем занят владелец, когда продажи «автоматизированы»:
>> вносит заказы в excel-таблицу
>> заполняет почтовые бланки на посылках
>> стоит в очереди на почте с кучей посылок (каждый день!)
>> вносит трек номера в excel-таблицу, затем рассылает клиентам

Может, хватит на ровном месте встраивать «технологии» туда, где действительно нужен человек, в то время как люди загружены рутиной для роботов?
Читать дальше →
Всего голосов 80: ↑73 и ↓7+66
Комментарии29

Договоры — это как отладка

Время на прочтение7 мин
Количество просмотров29K
7.2. Как форс-мажор указана забастовка в отрасли и регионе, это лучше вычеркнуть, т.к. неясно, в какой отрасли и в каком регионе.

Чтобы быть плохим юристом, не надо обладать специальными навыками: достаточно здравого смысла, чтобы разбираться в документах. Чтобы быть приемлемым юристом — ещё нужна хорошая память для того, чтобы помнить, что и где в нормативах и прецедентах. А чтобы быть отличным — ещё иметь огромную практику и нездоровое чувство юмора. Хотя последнее необязательно, конечно.

Каждый наш договор страхует юрист-отладчик, который как брекпоинтами размечает точки рисков. Сейчас покажу пару примеров того, что он видит и чувствует.
Читать дальше →
Всего голосов 85: ↑82 и ↓3+79
Комментарии91

Миграция базы данных с InnoDB на MyRocks

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


Зоджи-Ла, Индия


Привет, Хабр! Меня зовут Олег Ефимов, я работаю в Badoo в команде «Платформа», занимаюсь задачами хранения фотографий, интерфейсами сервисов и много чем ещё.


Мне часто приходится слышать, что в том, что касается серверных технологий, Badoo – довольно консервативная компания. Отчасти это так, но на самом деле мы используем много молодых языков программирования, новых инструментов и технологий. Одна из них – RocksDB, на основе которой Facebook создал MySQL storage engine – MyRocks. Пост о том, как Facebook осуществлял миграцию одной из своих баз данных с InnoDB на MyRocks, мне и захотелось для вас перевести.

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

Правила английского, которые нарушают ваши иностранные коллеги

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


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

Двойное отрицание


Вы же помните, что в предложении на английском достаточно одного отрицания? А потом вдруг слушаем песню Rolling Stones и слышим “I can’t get no satisfaction”. Все дело в том, что это песня, тут можно, скажите вы. И это верно. Но еще стоит упомянуть, что двойное отрицание делает фразу эмоциональнее. Поэтому такие фразы и стали популярны. Но это неформальный способ, так что не увлекайтесь с двойными отрицаниями.
Читать дальше →
Всего голосов 77: ↑72 и ↓5+67
Комментарии191

Пишем действительно тестируемый код

Время на прочтение18 мин
Количество просмотров19K
Что такое тестируемый код? Каких правил стоит придерживаться для его написания? Как начать писать такой код, если кодовая база к этому не готова?

Статья с большим количеством примеров кода и иллюстраций, в основе которой – выступление Антона на конференции Mobius 2017 в Питере. Антон является разработчиком Android-приложений в Juno, и в своей работе затрагивает множество смежных технологий. Этот доклад не об Android и не о Kotlin, он о тестировании в целом, об идеях, которые лежат над платформой и над языком и которые могут быть адаптированы к любому контексту.


Всего голосов 22: ↑21 и ↓1+20
Комментарии4

Полное руководство по написанию утилиты для Go

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


Некоторое время назад я начал делать утилиту, которая упростила бы мне жизнь. Она называется gomodifytags. Утилита автоматически заполняет поля структурных тегов (struct tag) с помощью имён полей. Пример:


Пример использования gomodifytags в vim-go


Эта утилита облегчает управление многочисленными полями структуры. Она умеет добавлять и удалять теги, управлять их опциями (например, omitempty), определять правила трансформации (snake_case, camelCase и пр.) и многое другое. Как эта утилита работает? Какие Go-пакеты она использует? Наверное, у вас есть много вопросов.


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


Налейте кофе и начинайте читать!

Читать дальше →
Всего голосов 45: ↑40 и ↓5+35
Комментарии9
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность