Как стать автором
Обновить
3
0.1
Евгений @Kyrych

Программист

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

Пар против бензина

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

О чём подумает обыватель услышав о паровом автомобиле? Наверное, на ум придут неспешные паровозы, громоздкие котлы, закипающие по полчаса, да клубы пара и дыма. Паровая машина ассоциируется с чем угодно, но только не с образом небольшого проворного автомобиля, по виду которого и не скажешь, что под капотом у него нет привычного ДВС.

Какое-то время автомобили с электродвигателями, паровыми машинами и ДВС успешно конкурировали друг с другом на рынке. В 1902 году в Америке из 909 новых зарегистрированных автомобилей 485 были паровыми. Но уже к началу 1910-х конструкторы смогли значительно улучшить ДВС введя такие новшества, как электростартер. Эпоха пара стремительно заканчивалась. Самые совершенные паровые автомобили 1920-х годов совершили свой последний рывок, но не смогли составить конкуренцию массовым и недорогим карбюраторным машинам. О них мы сегодня и поговорим.
Читать дальше →
Всего голосов 67: ↑63 и ↓4+84
Комментарии87

Корутины в C++20. Часть 1

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

Введение


Данная статья является переводом главы из книги Райнера Гримма Concurrency with Modern C++, которая является более доработанной и обширной версией статьи на его сайте. Так как весь перевод не умещается в рамках данной статьи, в зависимости от реакции на публикацию, выложу оставшуюся часть.


Корутины


Корутины это функции которые могут приостановить или возобновить свое выполнение при этом сохраняя свое состояние. Эволюция функций в C++ сделала шаг вперед. Корутины с наибольшей вероятностью войдут вошли в C++20.


Идея корутин, представленная как новая в C++20, довольно стара. Понятие корутины было предложено Мелвином Конвеем. Он использовал данное понятие в публикации о разработке компиляторов от 1963. Дональд Кнут называл процедуры частным случаем корутин. Иногда должно пройти время чтобы та или иная идея была принята.

Читать дальше →
Всего голосов 13: ↑12 и ↓1+21
Комментарии17

Что полезного можно вытащить из логов рабочей станции на базе ОС Windows

Время на прочтение5 мин
Количество просмотров73K
Пользовательская рабочая станция — самое уязвимое место инфраструктуры по части информационной безопасности. Пользователям может прийти на рабочую почту письмо вроде бы из безопасного источника, но со ссылкой на заражённый сайт. Возможно, кто-то скачает полезную для работы утилиту из неизвестно какого места. Да можно придумать не один десяток кейсов, как через пользователей вредоносное ПО может внедриться на внутрикорпоративные ресурсы. Поэтому рабочие станции требуют повышенного внимания, и в статье мы расскажем, откуда и какие события брать для отслеживания атак.


Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии13

Асинхронность в программировании

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

В области разработки высоконагруженных многопоточных или распределенных приложений часто возникают дискуссии об асинхронном программировании. Сегодня мы подробно погрузимся в асинхронность и изучим, что это такое, когда она возникает, как влияет на код и язык программирования, которым мы пользуемся. Разберемся, зачем нужны Futures и Promises и затронем корутины и операционные системы. Это сделает компромиссы, возникающие во время разработки ПО, более явными.


В основе материала — расшифровка доклада Ивана Пузыревского, преподавателя школы анализа данных Яндекса.


Читать дальше →
Всего голосов 71: ↑67 и ↓4+63
Комментарии70

Собеседование на английском: как правильно рассказать о себе

Время на прочтение5 мин
Количество просмотров56K
Все больше рекрутеров в современных компаниях предпочитают проводить собеседования с соискателями на английском языке. Для HR-специалистов это выгодно, ведь можно одновременно проверить знания английского у соискателя и узнать больше информации о нем.

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

Преподаватели онлайн-школы английского языка EnglishDom поделились мнениями, как построить презентацию самого себя на английском, чтобы вас взяли на работу.
Читать дальше →
Всего голосов 40: ↑34 и ↓6+28
Комментарии27

Полезные и не очень государственные услуги

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

Как похорошел интернет при… или какие полезные (и не очень) госуслуги можно получить онлайн.


Наркоман ли я? Бабушкин суд у подъезда думает, что да (на самом деле нет — я всегда с ними здоровался, а теперь и справка есть!). Был ли я зеком? Сведений не имеется, гласит другая справка. Проходил ли я диспансеризацию? Однозначно да, хотя я этого и не помню, но это не повод не заплатить 1400 рублей за такую «услугу» государству в адрес медучреждения. Какой размер моего ИПК? Государство говорит, что он у меня большой и с возрастом будет становиться только больше и лучше, но мы-то знаем (ц).



Американские хакеры решили повлиять на результаты выборов в России, но пока просто не могут зарегистрироваться на сайте Госуслуг.
(с) интернет

О статье


Под катом я расскажу с нотариально незаверенными скриншотами про полезные и не очень государственные услуги, полученные мной (либо не полученные вовсе). Опишу как они упрощают жизнь, либо наоборот её усложняют. Пост будет больше ироничным, т.к. большинство услуг всё же бесполезны, либо работают не так как надо, а те что работают — используются нечасто.
Читать дальше →
Всего голосов 68: ↑61 и ↓7+54
Комментарии175

Создание продающих сайтов с помощью STM модели

Время на прочтение7 мин
Количество просмотров13K
Как нужно проектировать страницы сайта, чтобы он продавал? Вот некоторые критерии, которые часто применяют заказчики и проектировщики:

  • Собственный опыт — «получилось на прошлом сайте, получится и сейчас»;
  • Мнения экспертов и информация из статей — «телефон обязательно должен быть в шапке», «обязательно внедрите модуль сравнения товаров»;
  • Мнения авторитетных сотрудников — «дизайнер сказал, что в левом блоке нужно разместить новости»;
  • Сравнение с конкурентами — «у компании N на сайте есть модуль избранного, их сайт продает, значит и нам он нужен».
Всего голосов 18: ↑12 и ↓6+6
Комментарии3

Cambium cnPilot – недорогой WiFi, который нас удивил

Время на прочтение6 мин
Количество просмотров29K
Не секрет, что WiFi-решений на рынке сейчас много. Можно даже сказать, что слишком много – глаза разбегаются. И речь сейчас не просто о «консьюмерских» домашних «диртриста», которых под любым брендом в любом корпусе можно купить, наверное, тысячу и ни разу не повториться: речь о системах, которые позиционируются как оборудование для построения больших WiFi-сетей с централизованным управлением. Это значит, что мы не просто ставим в одном месте десяток ТД (здесь и далее – точка доступа), но еще и настраиваем их таким образом, что либо они все знают друг о друге и учитывают частоты друг друга при радиопланировании, осуществляют хендовер клиентов, либо какой-то отдельный узел сети управляет сразу всеми как одной большой сетью.


В противном случае, установка большого количества точек доступа в пределах видимости друг друга не улучшит, а скорее ухудшит ситуацию из-за взаимных помех и потери связи клиентами при переключении между точками.
Если приглядеться ко всему многообразию корпоративных решений, то условно можно разделить их на две большие группы:
Читать дальше →
Всего голосов 13: ↑9 и ↓4+5
Комментарии13

C/C++: как измерять процессорное время

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

image
КДПВ


От переводчика:
Большинство моих знакомых для измерения времени в разного вида бенчмарках в С++ используют chrono или, в особо запущенных случаях, ctime. Но для бенчмаркинга гораздо полезнее замерять процессорное время. Недавно я наткнулся на статью о кроссплатформенном замере процессорного времени и решил поделиться ею тут, возможно несколько увеличив качество местных бенчмарков.


P.S. Когда в статье написано "сегодня" или "сейчас", имеется ввиду "на момент выхода статьи", то есть, если я не ошибаюсь, март 2012. Ни я, ни автор не гарантируем, что это до сих пор так.
P.P.S. На момент публикации оригинал недоступен, но хранится в кэше Яндекса


Функции API, позволяющие получить процессорное время, использованное процессом, отличаются в разных операционных системах: Windows, Linux, OSX, BSD, Solaris, а также прочих UNIX-подобных ОС. Эта статья предоставляет кросс-платформенную функцию, получающую процессорное время процесса и объясняет, какие функции поддерживает каждая ОС.

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

Я хочу, чтобы сайты открывались мгновенно

Время на прочтение10 мин
Количество просмотров139K
Здравствуйте, меня зовут Александр Зеленин и я веб-разработчик. Я расскажу, как сделать так, чтобы ваш сайт открывался быстро. Очень быстро.


Я хочу, чтобы мой сайт открывался быстро
Всего голосов 130: ↑122 и ↓8+114
Комментарии87

Продление жизни аккумуляторам электроинструмента — часть 2

Время на прочтение4 мин
Количество просмотров28K
Мда. С момента написания первой части прошло уже 4 года.
Время летит…


Как ни странно, мой шуруповерт Stayer все еще жив, хотя и побывал в ремонте. Также живы и 4 из 5 аккумуляторов (один пошел на элементы для восстановления остальных).
Выведенные на корпус батарей разъемы позволяли дозаряжать проблемные ячейки и поддерживать батареи в годном состоянии. Но, боже, как это нудно!
В общем, когда меня окончательно достал этот процесс, я начал усиленно копать инет в поисках чипа, годного для балансировки аккумулятора на 15 Ni-Cd элементов.
И. Сюрприз! Я такого чипа просто не нашел. Ну, вот нету и всё тут. Для литиевых еще туда-сюда (и то на меньшее количество «банок») для никеля — глухо. Или я искать не умею, или производителям просто плевать на эту нишу.

Но, нету в жизни не решаемых задач!
Всего голосов 27: ↑27 и ↓0+27
Комментарии89

Алгоритм создания зеркал (website mirror)

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


Описание


В настоящем руководстве представлены материалы по созданию системы зеркал различного программного обеспечения. Описаны основные трудности при создании системы зеркал, показаны пути их преодоления. Для системных администраторов и SEO-специалистов. Создание системы зеркал программных продуктов включает следующие этапы:
  1. Создание адреса
  2. Выделение требуемого дискового пространства
  3. Создание зеркал
  4. Добавление зеркал в список зеркал (mirrors list).
Читать дальше →
Всего голосов 11: ↑8 и ↓3+5
Комментарии5

Анимируем изменения размеров компонента в Android

Время на прочтение13 мин
Количество просмотров25K
Привет, %username%! Сегодня я хотел бы поделиться с тобой способом без лишних усилий реализовать анимированное изменение размеров компонента в приложении для Android.

Я много читал про анимацию, а вот использовать в своих интерфейсах до сих пор не довелось. Хотелось опробовать наконец всякие Layout Transitions, Animators, Layout Animations и написать по этому поводу статейку, чтобы и самому лучше запомнить, и другим разжевать. Закончилось, однако, всё гораздо прозаичней — кастомным ViewGroup и ObjectAnimator'ом.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии14

Настройка современного Puppet сервера с нуля

Время на прочтение9 мин
Количество просмотров65K
Недавно я переосмыслил процедуру установки нового сервера Puppet с нуля на Ubuntu 12.04, включая все современные свистелки и перделки. В итоге у меня получился этот гайд.

Для начала нам потребуется чистая Ubuntu c работающей сетью и настроенным DNS.

В итоге мы должны получить:
  • Установленый везде Puppet 3-й версии
  • Конфиги в git репозитории с общим доступом
  • Динамические окружения, управляемые r10k
  • Поддержку PuppetDB
  • Поддержку Hiera


Данное руководство довольно длинное, т.к. все настройки делаются вручную, чтобы впоследствии легко можно было пользоваться результатом и подстраивать его под себя. Единственным исключением является PuppetDB, который проще установливать через собственный модуль от Puppet Labs, а не вручную.

Предполагается, что все команды будут выполнены от пользователя root на сервере Puppet, если не указано иное.
Читать дальше →
Всего голосов 33: ↑30 и ↓3+27
Комментарии15

Соединение компьютер-компьютер через интернет с динамическими IP

Время на прочтение3 мин
Количество просмотров143K
Очень часто мы слышим о том, что установить соединение компьютер-компьютер через интернет с динамическими IP – нереально без внешнего сервера.
А также думал, до определенного времени. Потом у меня закрались подозрения… А после мне стало известно очень многое и тайное.

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

Все совпадения случайны, цифры изначально выдуманы.

Читать дальше →
Всего голосов 41: ↑22 и ↓19+3
Комментарии46

JavaScript и Nginx = nginScript, а HTTP2 в придачу

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

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

Я, как и многие из хабровчан, люблю новинки. Релиз нового софта — это как праздник. Новые фичи, новые возможности… Новые способы забивать гвозди и кататься на велосипедах. Новые велосипеды… В общем можно придумать кучу аллегорий и метафор. А про что это я? Ах да, про Nginx, HTTP2 и JavaScript. Чем они связаны, спросите вы? А тем, что в последней версии Nginx (1.9.5) добавили много интересных плюшек, а именно:

  • добавили протокол HTTP2 и удалили модуль SPDY (нафиг старое барахло)
  • интегрировали прямо в nginx модуль ngx_http_js_module и создали свой диалект JavaScript

Го под кат, расскажу детали.
Читать дальше →
Всего голосов 52: ↑45 и ↓7+38
Комментарии57

О безопасности UEFI, часть пятая

Время на прочтение7 мин
Количество просмотров56K
После небольшого перерыва продолжаем разговор о безопасности UEFI. В этот раз речь пойдет о технологии SecureBoot, ее преимуществах и недостатках, об атаках на нее и защите от них.

Впервые о SecureBoot речь зашла в стандарте UEFI 2.2 в 2011 году, но окончательно все аспекты были реализованы в версии 2.3.1C в начале 2012 года. Основным разработчиком технологии была Microsoft, которая сразу же заявила, что для получения сертификата Windows 8 Ready для своей еще не выпущенной новой ОС требуется реализация и включение SecureBoot по умолчанию на всех новых ПК. Это заявление вызвало волну резкой критики со стороны сторонников свободного ПО, которая успешно докатилась и до Хабра.
Если вам интересно, чем именно закончилось противостояние MS и сообщества, как SecureBoot выглядит после почти 4 лет взросления, и какие атаки на него все еще возможны — добро пожаловать под кат.

Стоп, чуть не забыл: по доброй традиции, набор ссылок на предыдущие части, для тех, кто умудрился их пропустить.
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии24

Apache vs Nginx: практический взгляд

Время на прочтение12 мин
Количество просмотров370K
Apache vs Nginx

Введение


Apache и Nginx — 2 самых широко распространенных веб-сервера с открытым исходным кодом в мире. Вместе они обслуживают более 50% трафика во всем интернете. Оба решения способны работать с разнообразными рабочими нагрузками и взаимодействовать с другими приложениями для реализации полного веб-стека.

Несмотря на то, что у Apache и Nginx много схожих качеств, их нельзя рассматривать как полностью взаимозаменямые решения. Каждый из них имеет собственные преимущества и важно понимать какой веб-сервер выбрать в какой ситуации. В этой статье описано то, как каждый из этих веб-серверов ведет себя при различных условиях.
Читать дальше →
Всего голосов 89: ↑69 и ↓20+49
Комментарии184

Мифы и рецепты Docker

Время на прочтение5 мин
Количество просмотров90K
Вокруг постоянно говорят про Docker. Я знаю что вы отвечаете: «Это что-то про контейнеры, виртуализацию, облака», «У нас все и так работает», «Это все баловство», «Он не запустится на нашем старом ядре линукса», «Точно так же можно подготовить образ для облака и запустить его», «Можно просто настроить LXC, chroot или AppArmor». Вы знаете, что он вам не нужен. Очередная модная штука. В конце концов, просто лень разбираться. Но любопытно! Тогда, читайте. Это серия из шести заметок.

Если вы не слышали о контейнерах в Линуксе, вот список страниц, которые надо прочитать, чтобы понимать о чем речь:


Поставьте Docker, он небольшой. Для Windows и Mac можно просто поставить Toolbox: www.docker.com/toolbox. Создавать виртуальную машину и настраивать лучше из командной строки, а не через графическую обертку. Прочитайте несколько уроков из мануала. Здесь я пишу о том, чего в документации нет.

Docker — это не виртуализация.


Вот какой у меня линукс:

Welcome to Ubuntu 15.04 (GNU/Linux 3.19.0-15-generic x86_64)

Last login: Tue Aug 18 00:43:50 2015 from 192.168.48.1
gri@ubuntu:~$ uname -a
Linux ubuntu 3.19.0-15-generic #15-Ubuntu SMP Thu Apr 16 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/                                       Linux
gri@ubuntu:~$ free -h
             total       used       free     shared    buffers     cached
Mem:          976M       866M       109M        11M       110M       514M
-/+ buffers/cache:       241M       735M
Swap:         1.0G       1.0M       1.0G

Запускаю CentOS:

gri@ubuntu:~$ docker run -ti centos
[root@301fc721eeb9 /]# uname -a
Linux 301fc721eeb9 3.19.0-15-generic #15-Ubuntu SMP Thu Apr 16 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@301fc721eeb9 /]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[root@301fc721eeb9 /]# free -h
              total        used        free      shared  buff/cache   available
Mem:           976M         85M        100M         12M        790M        677M
Swap:          1.0G        1.0M        1.0G

Docker — это не chroot, их функционал частично совпадает. Это не система безопасности вроде AppArmor. Docker использует те же контейнеры, что и LXC, но интересен он не контейнерами. Docker — это ничего из того, что я думал о нем до того, как прочитал документацию.

То же ядро, память, файловая система, а дистрибутивы, библиотеки и пользователи — разные.

Docker — это инструмент объекто-ориентированного проектирования


Регулярно возникает вопрос, является ли конфигурация nginx частью веб-приложения. Системные администраторы спорят с разработчиками. Но недавно в мире появились devops и захотели вместо последовательно-процедурного вызова команд из bash думать привычным OOP. Docker дает инкапсуляцию, наследование и полиморфизм компонентам системы, таким как база данных и данные. Это значит, что можно провести декомпозицию всей информационной системы, выделить приложение, web-сервер, базу данных, системные библиотеки, рабочие данные в независимые компоненты, внедрять зависимости из конфигов, и заставить все это работать одной группой, одинаково на разных компьютерах.

Такой подход можно использовать, чтобы снизить потери рабочего времени дорогих front-end разработчиков на настройку базы данных и Nginx. Чтобы уйти от vendor lock-in. Не обломаться когда openssl на сервере не поддерживает cipher, используемый в API госучреждения. Чтобы приложение работало независимо от версии PHP или Python на сервере заказчика. Создавать open source не только в виде кода, но и настройкой пакетов из нескольких приложений, написанных на разных языках, работающих на разных слоях OSI.
Читать дальше →
Всего голосов 35: ↑32 и ↓3+29
Комментарии99

Еще один способ отключения сбора телеметрии в OC Windows 10

Время на прочтение10 мин
Количество просмотров352K
Микрософт с помощью пасьянса и косынки учила пользователей пользоваться мышью,
теперь с помощью windows 10 учит читать лицензионное соглашение.

После выхода windows 10 сразу появились сообщения о сборе информации о действиях пользователей и много обсуждений, что делать. Достаточно быстро пользователи составили список основных серверов, собирающих информацию и попытались их заблокировать через файл hosts. Но скептики сразу выдвинули здравое предположение, что MS мог предусмотреть этот метод и некоторые адреса прописать в коде. Тем более, что MS всегда может актуализировать адреса серверов через windows update.

В нашей компании начали появляться первые пользователи windows 10, и мы решили опробовать блокировку передачи телеметрии через встроенный windows firewall.
Читать дальше →
Всего голосов 97: ↑89 и ↓8+81
Комментарии245
1
23 ...

Информация

В рейтинге
3 425-й
Откуда
Казань, Татарстан, Россия
Дата рождения
Зарегистрирован
Активность