Search
Write a publication
Pull to refresh
0
0
Send message

Ideal OS: перезагрузка десктопных операционных систем (часть 1)

Reading time7 min
Views44K

Привет, Хабр! Представляю вашему вниманию перевод статьи Ideal OS: Rebooting the Desktop Operating System Experience автора Josh Marinacci.



TL;DR: В этой статье Я хочу показать что:


  • современные десктопные операционные системы не такие уж и современные. Это тормознутое поделие, обрюзгшее невообразимым множеством слоёв легаси-хлама, которое всё ещё функционирует лишь благодаря закону Мура.
  • инновации в десктопных операционных системах остановились 15 лет назад и все ведущие игроки вряд ли захотят снова в них вложиться
  • мы можем и нам следует начать всё с нуля, выучив уроки прошлого.
Читать дальше →

Памятка евангелиста PostgreSQL: экспроприируем экспроприаторов

Reading time12 min
Views8.1K

Привет, Хабр, давно не виделись! Со времени моих предыдущих публикаций в
серии «Памятка евангелиста PostgreSQL» (1, 2, 3) прошло довольно много времени, и многое изменилось. Вышли новые релизы MySQL и PostgreSQL с интересными фичами (хотя содержимое моих статей остаётся по большей части актуальным, я старался вносить мелкие обновления там, где это требовалось). В моду вошёл ко-маркетинг (с ко-франшизингом и местами даже ко-лизингом), когда доклады о PostgreSQL звучат на конференциях, посвящённых MySQL, и наоборот. Появились даже совместные доклады, где предпринимаются попытки объективного сравнения MySQL и PostgreSQL в тех или иных плоскостях. Отгремела история с Uber, с протяжённой по времени дискуссией, в которую я тоже внёс свой скромный вклад.


В целом, диалог между двумя проектами становится более содержательным. Я всё реже слышу страшилки и мифы, о которых я рассказывал в предыдущих статьях. Однако есть один устойчивый миф, который по-прежнему раскручивается сообществом PostgreSQL. Если быть точным, раскручивается он моей любимой компанией Postgres Professional – от представителей других компаний я пока такого не слышал. Это миф о «проприетарности» MySQL. В беседах руководство Postgres Professional демонстрирует какое-то дикое незнание матчасти и своеобразное толкование терминов. А значит пришло время дорогой редакции снова взобраться на броневичок!

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

Чистый код на PHP

Reading time19 min
Views114K


Это принципы разработки ПО, взятые из книги Clean Code Роберта Мартина и адаптированные для PHP. Это руководство не по стилям программирования, а по созданию читабельного, многократно используемого и пригодного для рефакторинга кода на PHP.


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


Статья вдохновлена clean-code-javascript.

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

New Edition: тудушка для управления временем и мотивацией

Reading time4 min
Views10K
Привет! Цель моей публикации — услышать больше голосов насчет новой идеи в управлении своим временем и своими задачами. Я специально не публикуюсь в хабе «Я пиарюсь», потому что это статья не про PR. Не буду указывать и название тудушки, как и названий приложений наших конкурентов (кому интересно, можете угадать нас). Я расскажу, как есть, и попрошу вас высказать свои мысли на этот счет. Верной ли мы дорогой идем. Нужны ли те новшества, которые мы планируем осуществить. Публика здесь думающая, а это сейчас и нужно.

Итак, мы с командой ребят из разных стран
Читать дальше →

Описание алгоритмов сортировки и сравнение их производительности

Reading time24 min
Views719K

Вступление


На эту тему написано уже немало статей. Однако я еще не видел статьи, в которой сравниваются все основные сортировки на большом числе тестов разного типа и размера. Кроме того, далеко не везде выложены реализации и описание набора тестов. Это приводит к тому, что могут возникнуть сомнения в правильности исследования. Однако цель моей работы состоит не только в том, чтобы определить, какие сортировки работают быстрее всего (в целом это и так известно). В первую очередь мне было интересно исследовать алгоритмы, оптимизировать их, чтобы они работали как можно быстрее. Работая над этим, мне удалось придумать эффективную формулу для сортировки Шелла.

Во многом статья посвящена тому, как написать все алгоритмы и протестировать их. Если говорить о самом программировании, то иногда могут возникнуть совершенно неожиданные трудности (во многом благодаря оптимизатору C++). Однако не менее трудно решить, какие именно тесты и в каких количествах нужно сделать. Коды всех алгоритмов, которые выложены в данной статье, написаны мной. Доступны и результаты запусков на всех тестах. Единственное, что я не могу показать — это сами тесты, поскольку они весят почти 140 ГБ. При малейшем подозрении я проверял и код, соответствующий тесту, и сам тест. Надеюсь, что статья Вам понравится.
Читать дальше →

Что нового в PHP 7.2?

Reading time14 min
Views86K

Несмотря на то, что мы активно работаем с Python и Go, всё же существенная часть нашего серверного кода написана на PHP. Поэтому мы внимательно следим за всеми нововведениями языка. Прошло меньше года после релиза предыдущей минорной версии, и вот уже последний бета-релиз запланирован на 17 августа. Его ещё не рекомендуется использовать в production, но уже можно скачать docker-образ. Пора разбираться, что изменилось в новой версии языка.


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

World Machine + UE4: Полный рабочий процесс

Reading time3 min
Views32K
Привет, Хабр! Предлагаю вашему вниманию перевод статьи WorldMachine + UE4: Full Workflow.

Руслан Назиров показал, как можно создавать красивые ландшафты в World Machine и импортировать их в Unreal Engine 4. Руслан начал работать с Unreal Engine всего год назад, но уже сейчас демонстрирует удивительные результаты.

Процесс создания ландшафта для UE4


1. Создание нужного ландшафта в World Machine. Я использую библиотеку макросов GeoGlyph для ускорения процесса создания ландшафта.

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

Пишем расширения для PHP 7 на C++

Reading time14 min
Views23K
Мне приходилось писать расширения для того, чтобы воспользоваться функциями C++ библиотек в коде PHP. Ещё, одно тяжёлое расширение портировал с 5й версии на 7ю.

Если загуглить документацию на тему написания расширений для PHP, то, в основном, это будут тексты до 2014 года, актуальные для версии 5. Сам сайт php.net предоставляет обрывчатые и устаревшие сведения, а то, что удаётся найти в их wiki, опять про 5ю версию. Максимум, что удалось найти на офф сайте, это скудный ман по миграции уже написанных расширений.

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

По следам Petya: находим и эксплуатируем уязвимость в программном обеспечении

Reading time7 min
Views10K
image

Нашумевшие события последних месяцев наглядно показывают, насколько актуальной является проблема критических уязвимостей в программном обеспечении. Массовые атаки на пользователей с помощью вирусов-шифровальщиков WannaCry и Petya осуществлялись путем удалённой эксплуатации уязвимостей нулевого дня в сетевых сервисах Windows – SMBv1 и SMBv2. Нахождение и эксплуатация уязвимостей для удаленного выполнения кода – задачка явно не из легких. Однако лучшим из лучших специалистов по информационной безопасности всё по зубам!

В одном из заданий очного тура NeoQuest-2017 необходимо было найти уязвимости в доступной по сети программе-интерпретаторе команд, и с помощью их эксплуатации выполнить код на удаленном сервере. Для доказательства взлома нужно было прочитать содержимое файлового каталога на сервере – там, по условию, размещался ключ задания. Участникам был доступен бинарный файл интерпретатора. Итак, лёд тронулся!
Читать дальше →

MMO с нуля. Часть 2. Наращивание функционала + алгоритм Diamond Square

Reading time127 min
Views15K
Всем привет! В предыдущей части мы разобрались с базовой архитектурой, сетью и обменом сообщениями. Нарастим теперь функционал. Сделаем возможность войти, зарегистрироваться получив при этом сессионный id, который можно в будущем использовать для управления клиентом в процессе игры. Далее мы добавим чат, по сути все работает по его принципу: получили сообщение — разослали подписантам. Сделаем возможность создавать игровые комнаты, где будем собирать игроков и отправлять в бой. Синхронизировать перемещение клиентов и напоследок проверять выстрел на проверочном сервере. Будет много кода, я продолжаю пошаговое описание, чтобы можно было быстро разобраться и воспроизвести для своих нужд. Для тех, кто не знаком с первой частью, но хочет вынести для себя что-то полезное здесь и сейчас, я добавил реализацию алгоритма генерации фрактальных ландшафтов Diamond Square, в начало. Happy coding!

Часть 1. Общая картина, сборка библиотек, подготовка клиента и сервера к обмену сообщениями
Часть 2. Наращивание игрового функционала + алгоритм Diamond Square


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

Типы struct, union и enum в Modern C++

Reading time9 min
Views165K

Язык C++ сильно изменился за последние 10 лет. Изменились даже базовые типы: struct, union и enum. Сегодня мы кратко пройдёмся по всем изменениям от C++11 до C++17, заглянем в C++20 и в конце составим список правил хорошего стиля.

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

25 микрочипов, потрясших мир

Reading time23 min
Views53K
image

В разработке микрочипов, как и в жизни, мелочи иногда складываются в значительные явления. Выдумайте хитрую микросхему, создайте её из полоски кремния, и ваше маленькое создание может привести к технологической революции. Так произошло с микропроцессором Intel 8088. И с Mostek MK4096 4-килобитной DRAM. И с Texas Instruments TMS32010 цифровым процессором сигналов.

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

Мы подготовили список из 25 ИС, заслуживающих, по нашему мнению, почётное место на каминной полке дома, который построили Джек Килби и Роберт Нойс [изобретатели интегральной схемы – прим. перев.]. Некоторые из них превратились в долгоиграющую икону поклонения любителей чипов: к примеру, таймер Signetics 555. Другие, например, операционный усилитель Fairchild 741, стали азбучными примерами схем. Некоторые, к примеру, микроконтроллеры PIC от Microchip Technology, продавались миллиардами, и до сих пор продаются. Несколько особых чипов, таких, как флэш-память от Toshiba, создали новые рынки. А по меньшей мере один стал символом гиков в поп-культуре. Вопрос: на каком процессоре работает Бендер, алкоголик, курильщик и достойный порицания робот из «Футурамы»? Ответ: MOS Technology 6502.
Читать дальше →

Опубликована база с 320 млн уникальных паролей (5,5 ГБ)

Reading time3 min
Views248K

Проверка аккаунтов на живучесть

Одно из главных правил при выборе пароля — не использовать пароль, который уже засветился в каком-нибудь взломе и попал в одну из баз, доступных злоумышленникам. Даже если в вашем пароле 100500 символов, но он есть там — дело плохо. Например, потому что в программу для брутфорса паролей можно загрузить эту базу как словарный список. Как думаете, какой процент хешей она взломает, просто проверив весь словарный список? Вероятно, около 75% (реальную статистику см. ниже).

Так вот, откуда нам знать, какие пароли есть у злоумышленников? Благодаря специалисту по безопасности Трою Ханту можно проверить эти базы. Более того, их можно скачать к себе на компьютер и использовать для своих нужд. Это два текстовых файла в архивах: с 306 млн паролей (5,3 ГБ) и с 14 млн паролей (250 МБ).
Читать дальше →

Как выбрать камеру видеонаблюдения по завуалированным характеристикам

Reading time6 min
Views33K
image

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

Оптические приборы в этом отношении пострадали больше всего. Каждый человек знает про мегапиксели и разрешение, но когда речь заходит о более тонких материях, начинает «плавать». Если вы задумываетесь о покупке камеры (и не являетесь экспертом в этой области), полезно будет разобраться, что на самом деле означают непонятные аббревиатуры в характеристиках. Разобраться – это значит не только прочитать описание.

Как Яндекс создавал курс по C++, или Почему нам всё пришлось переписать

Reading time4 min
Views86K
В Яндексе C++ — один из основных языков, на нём написан наш поиск. Его развитие нам настолько важно, что больше года назад по инициативе Яндекса была создана российская рабочая группа по стандартизации «плюсов». Через неё у всех разработчиков русскоязычного пространства есть возможность влиять на развитие языка.



Недавно Физтех, Яндекс и ШАД запустили ещё один курс на платформе Coursera — «Основы разработки на C++: белый пояс». Он посвящён знакомству с С++. Я расскажу, для кого этот курс, как мы его готовили, что получилось в итоге и каковы наши дальнейшие планы.

Как всё началось, было выброшено и началось снова


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

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

Обработка многократно возникающих SIGSEGV-подобных ошибок

Reading time8 min
Views14K

Тема изъезжена и уже не мало копий было сломано из-за неё. Так или иначе люди продолжают задаваться вопросом о том может ли приложение написанное на C/C++ не упасть после разыменования нулевого указателя, например. Краткий ответ — да, даже на Хабре есть статьи на сей счёт.


Одним из наиболее частых ответов на данный вопрос является фраза "А зачем? Такого просто не должно случаться!". Истинные причины того почему люди продолжают интересоваться данной тематикой могут быть разные, одной из них может быть лень. В случая когда лениво или дорого проверять всё и вся, а исключительные ситуации случаются крайне редко можно, не усложняя кода, завернуть потенциально падающие фрагменты кода в некий try/catch который позволит красиво свернуть приложение или даже восстановится и продолжить работу как ни в чём не бывало. Наиболее ненормальным как раз таки может показаться желание снова и снова ловить ошибки, обычно приводящие к падению приложения, обрабатывать их и продолжать работу.


Итак попробуем создать нечто позволяющее решать проблему обработки SIGSEGV-подобных ошибок. Решение должно быть по максимуму кроссплатформенным, работать на всех наиболее распространённых десктопных и мобильных платформах в однопоточных и многопоточных окружениях. Так же сделаем возможным существование вложенных try/catch секций. Обрабатывать будем следующие виды исключительных ситуаций: доступ к памяти по неправильным адресам, выполнение невалидных инструкций и деление на ноль. Апофеозом будет то, что произошедшие аппаратные исключения будут превращаться в обычные C++ исключения.

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

Как я научился кодить после 30

Reading time9 min
Views42K
«Погрузитесь в изучение предмета, найдите наставника и не оглядывайтесь назад» — ключевые советы, которые автор материала дает всем, кто стремится освоить программирование с нуля. В истории, приведенной ниже, речь идет о непростом пути человека, решившего сменить профессию после 30 лет, чтобы стать разработчиком программного обеспечения.

image

Люди часто спрашивают меня, как я начал кодить и всегда удивляются, узнавая, что научился я после 30.

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

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

Программирование нервной системы человека. Видео семинара часть 1

Reading time3 min
Views6.1K
В марте этого года пользователи Гиктаймса поучаствовали в сборе средств для записи семинара «Программирование нервной системы человека». Семинар поддержало 19 человек с Гиктаймса, спасибо за ваш вклад. Всего пришло 34 человека.

Вот вопросы, которые разбирались на семинаре:

• Современные знания о нейрофизиологии обучения человека, подкреплённые практикой использования этих знаний
• Процесс формирования навыков, механизмы формирования специалиста и мастера
• Триггерные точки. Почему появляются болезненные точки в мышцах и местах их прикрепления, биологический смысл, как они связаны с качеством движений. Как избавиться от хронических болей в мышцах.
• Нейрофизиология механизма прокрастинации, почему не делаются важные дела
• Теория петель биологической обратной связи – каллиграфический почерк за 10 минут
• Теория функциональных систем – ускоряем скорость чтения в 2 раза за 5 минут
• НЛП и механизм «якорения» – почему работает и как правильно пользоваться
• Есть ли свобода выбора? Сознание и подсознание как феномены свободы выбора

Полуторачасовое видео первой части семинара и приглашение к сбору средств на следующий семинар под катом. Вторая часть уже заливается на Ютуб и завтра также появится на Гиктаймсе.

Программирование нервной системы человека. Триггерные точки

Reading time3 min
Views26K
У подавляющего большинства людей западной культуры легко найти на теле несколько триггерных точек — болезненных мест в мышце или точках её прикрепления.
 

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

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity