Search
Write a publication
Pull to refresh
14
0
Мухаммад @muhammad_97

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

Send message

10 советов, как преодолеть страх общения с носителем английского языка

Reading time5 min
Views33K
С вами такое было, что сам с собой говоришь на безупречном английском, а вот с реальными людьми получаются какие-то рандомные слова? А с носителем языка вообще выходит какой-то треш, после которого хочется завернуться в одеялко и никогда больше не покидать свою квартиру! Хорошо, если под рукой Google Translate или какой-то словарик. А еще лучше, если вживую общаться не нужно.

Вы скажите, что уже есть всякие там разговорники и даже волшебные наушники, как рыбка из “Автостопом по галактике”, которые переводят все на лету. Это правда, но вот качество таких переводов пока все также на уровне Google Translate или Prompt пятнадцатилетней давности. В смысле, что машинный перевод пока еще не очень и его нужно фильтровать и проверять, а общаться нужно уже сейчас.

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

Популяризация науки: лекции российских ученых

Reading time7 min
Views34K

image


В мире растет число фейковых новостей и все сложнее найти источник правдивой информации. Спрос на достоверность, качество и фактчекинг не пропал, но сложно подружить методологии проверки данных с новостями мейнстрима в эпоху, когда даже серьезные издания гонятся за кликбейтом. Изъеденные недочетами новости политики, экономики, спорта и других сфер начинают раздражать, а не привлекать внимание. Образуется информационный вакуум, заполнить который могут новости науки. Манипулировать научными данными не так интересно, как фактами в экономике и политике. Наука поддерживается прекрасной репутацией источников — например, не вызывает сомнений авторитетность журнала «Nature» или достоверность базы данных биотехнологической информации PubMed.


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

MASM, TASM, FASM, NASM под Windows и Linux

Reading time5 min
Views177K
В данной статье я хочу рассмотреть вопросы, которые могут возникнуть у человека, приступившего к изучению ассемблера, связанные с установкой различных трансляторов и трансляцией программ под Windows и Linux, а также указать ссылки на ресурсы и книги, посвященные изучению данной темы.

MASM


Используется для создания драйверов под Windows.
Читать дальше →

SASM – IDE для ассемблера

Reading time4 min
Views124K
Здравствуйте, уважаемые хабравчане!

Данным постом хочу представить сообществу проект, который время от времени писался мной последний год: SASM (SimpleASM) — IDE для разработки программ на языке ассемблера x86 и x86-64.

image

SASM — простая кроссплатформенная (доступна на Windows и Linux) среда разработки для языков ассемблера NASM, MASM, GAS, FASM с подсветкой синтаксиса и отладчиком. Программа работает «из коробки» и хорошо подойдет для начинающих изучение языка ассемблера. Основана на Qt. Распространяется по свободной лицензии GNU GPL v3.0.

Исходники лежат в репозитории на GitHub.
Бинарники можно скачать на сайте программы.

Под катом Вы найдете немножко истории и более подробное описание возможностей.
Читать дальше →

Разбор заданий с Google CTF 2016: Mobile

Reading time9 min
Views25K


Intro


Вчера закончились впервые организованные Google`ом соревнования по захвату флага — Google Capture The Flag 2016. Соревнования длились двое суток, за время которых нужно было выжать из предлагаемых тасков как можно больше флагов. Формат соревнования — task-based / jeopardy.

Как заявил гугл, задания для этого CTF составляли люди, являющиеся сотрудниками команды безопасности гугла. Поэтому интерес к данным таскам, как и к первому GCTF в целом, был достаточно велик — всего зарегистрировалось ~2500 команд, из которых, однако, только 900 набрали хотя бы 5 очков на решении тасков (опустим ботов и немногочисленные попытки играть нечестно). Принять участие можно было любому желающему, начиная от rookie и любителей безопасности и заканчивая легендами отраслей. Кроме того, можно было участвовать и в одиночку.

Большую часть от 2х суток я ковырял задания категории Mobile. И в этом хабе представлены writeup`ы всех тасков этой категории. Гугл предложил всего 3 задания для Mobile(в других было по 5-6), но от этого они были, возможно, даже более качественными.

Ну ладно, вода закончилась, переходим к сути :)

Хватит воды. Перейти к разбору тасков!

50 наиболее интересных hardware-стартапов в Европе

Reading time2 min
Views18K


Мы адаптировали подборку европейских hardware-стартапов и привели примеры собственных портфельных проектов в данной области. Подборка наиболее заметных стартапов поможет вам быстро разобраться в трендах, оценить потенциальных конкурентов и направить собственный проект в нужное русло.
Читать дальше →

От песка к компьютеру. Часть 1. Атомы и транзисторы

Reading time6 min
Views56K
Все мы еще с уроков информатики знаем, что информация внутри компьютера передаётся при помощи нулей и единиц, но оказалось, что большинство айтишников, с которыми я общаюсь (и довольно хороших!) слабо представляют, как же, все-таки, устроен компьютер.

Как заставить песок делать то, чего мы от него хотим?

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

Версионирование и деплой кода PostgreSQL

Reading time6 min
Views19K
Сотни баз данных и тысячи хранимых процедур. Как это всё писать, тестировать и деплоить на множество серверов с возможностью быстрого отката в условиях хайлоад 24х7 и не умереть? Интересно? Добро пожаловать под кат!

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

10 очевидных шагов для подготовки инфраструктуры интернет-магазина к Чёрной пятнице

Reading time10 min
Views10K


Несмотря на то, что мы предпочитаем писать про микросервисы, Kubernetes и прочее из области cloud native, нам хорошо известен и другой мир — гораздо более реальный, если посмотреть «в массе», например, на интернет-магазины (даже весьма успешные). В нём нет автоматического provisioning и масштабирования, сложной балансировки нагрузки и прочих красивых технических решений. Зато есть «Чёрная пятница», которая уже завтра, а значит — времени на подготовку практически не осталось. Конечно, наш рецепт №1 по качественной подготовке к ней (а заодно и получению целого букета дополнительных плюсов) — миграция на микросервисную архитектуру и Kubernetes, но предположим, что по какой-то причине этот вариант не подходит (до завтра его всё равно не реализовать).

Эта статья — список более-менее быстрых действий для оптимизации типовой инфраструктуры интернет-магазина (рассматриваются примеры с nginx, Apache, PHP, MySQL) с целью её подготовки к высоким нагрузкам. Они могут быть весьма очевидны для опытных системных администраторов, однако наверняка окажутся полезными для тех, кто глубоко ещё не погружался в эти вопросы, а их актуальность стремительно нарастает. Итак, попробуем выжать максимум из того, что есть в инфраструктуре, или хотя бы взять на заметку те основные вопросы, которыми стоит озаботиться перед следующими всплесками нагрузки.
Читать дальше →

Маркетинг на Кикстартере, или Спасение утопающих

Reading time11 min
Views12K
Так уж получилось, что в последние несколько месяцев я регулярно, много и с разными людьми говорю о том, как выводить проекты на краудфандинг — в том числе иногда пересекаюсь с командами, выводившими или собирающимися выводить проект на краудфандинг, иногда сам замечают какие-то проекты, иногда знакомые присылают ссылку на посмотреть и сказать что-то о перспективах стороннего проекта, который интересен им. Да, проекты меня интересуют исключительно из области разработки «железа». Так уж сложилось.

В маркетинге — в нормальном маркетинге, который product, price, place, promotion, а не «ищем опытного маркетолога для написания текстов емейл-рассылок» — есть такая задача, про которую прямо обычно не говорят, но которая принципиально важна: уметь взглянуть на свой продукт глазами потребителя. Собственно, из решения этой задачи вытекают все четыре «P».



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

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

А вот в стартапах дела обстоят хуже всего. Во-первых, нет не только денег на исследования, но и, как правило, умения интерпретировать их результаты (отсюда растут ноги победных кличей «наш продукт востребован, мы провели опрос на Хабре и получили 1462 голоса за!», а также сборы фокус-групп по знакомым во ВКонтакте). Во-вторых, за редкими исключениями, 100 % участников проекта — отцы-основатели, у которых к собственному детищу развилось много тёплых чувств, препятствующих тому, чтобы посмотреть на него объективно.

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

Да не обидятся на меня авторы проектов.

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

Самодельное умное зеркало показывает уведомления с Android Wear

Reading time1 min
Views27K


Часы Android Wear являются помощником современного человека, обеспечивая постоянную информационную поддержку своего владельца (передача уведомлений со смартфона, фитнес-функции и т.п.). Но что, если умные часы лежат на полочке дома, и надеть их сейчас нет возможности, а уведомления получать нужно? Тогда на помощь приходит Николас Нотом с его проектом Smart Mirror. Его зеркало показывает все уведомления с Android Wear.

Само зеркало — одностороннее зеркальное стекло на мониторе, который подключен HDMI-кабелем к смартфону, хотя, по словам Николаса, использовать можно и мини-ПК Raspberry Pi.
Читать дальше →

Оптимизация кода: память

Level of difficultyHard
Reading time12 min
Views94K
Большинство программистов представляют вычислительную систему как процессор, который выполняет инструкции, и память, которая хранит инструкции и данные для процессора. В этой простой модели память представляется линейным массивом байтов и процессор может обратиться к любому месту в памяти за константное время. Хотя это эффективная модель для большинства ситуаций, она не отражает того, как в действительности работают современные системы.

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

image

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

Симулятор машинок Брайтенберга

Reading time9 min
Views16K
Просто захотелось написать симулятор машинок Брайтенберга. Корни у этой вещи растут из идей построения простеньких роботов, но также она интересна с точки зрения развития сложных систем.


Итак, что же это такое?

(Осторожно, в статье чрезвычайно много картинок и анимаций!)
Читать дальше →

Опрос пользователей Хабра

Reading time1 min
Views20K
Дорогие друзья! Мы совершили несколько итераций и за последнее время изменили дизайн наших сайтов: Хабрахабр и Гиктаймс. Мы получили немало фидбэка в комментариях и в обращениях — спасибо за советы, найденные баги фичи, мы всё учли, сделали и записали.


Мы знаем, сколько вас из какой страны и региона, какие вы по полу и даже немножко — по увлечениям. И мы обязательно продолжим знакомство. Но ни одна аналитика не расскажет нам то, что вы можете рассказать словами о том, как вы пользуетесь Хабром и Гиктаймс. Поэтому просим вас уделить несколько минут нашему опросу.
Читать дальше →

Переписать базу сообщений ВКонтакте с нуля и выжить

Reading time9 min
Views63K
Наши пользователи пишут друг другу сообщения, не зная усталости.

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

При таком объёме данных критически важно, чтобы логика хранения и доступа к ним была построена оптимально. Иначе в один не такой уж и прекрасный момент может выясниться, что скоро всё пойдёт не так.

Для нас этот момент наступил полтора года назад. Как мы к этому пришли и что получилось в итоге — рассказываем по порядку.
Читать дальше →

Нейронные сети в картинках: от одного нейрона до глубоких архитектур

Reading time7 min
Views97K
Многие материалы по нейронным сетям сразу начинаются с демонстрации довольно сложных архитектур. При этом самые базовые вещи, касающиеся функций активаций, инициализации весов, выбора количества слоёв в сети и т.д. если и рассматриваются, то вскользь. Получается начинающему практику нейронных сетей приходится брать типовые конфигурации и работать с ними фактически вслепую.

В статье мы пойдём по другому пути. Начнём с самой простой конфигурации — одного нейрона с одним входом и одним выходом, без активации. Далее будем маленькими итерациями усложнять конфигурацию сети и попробуем выжать из каждой из них разумный максимум. Это позволит подёргать сети за ниточки и наработать практическую интуицию в построении архитектур нейросетей, которая на практике оказывается очень ценным активом.
Читать дальше →

Оптимизация скорости визуализации веб-страниц

Reading time11 min
Views21K
Нередко рассказы о том, как веб-разработчики заботятся о своих приложениях, начинаются с процесса визуализации сайта, опускаются на уровень DOM и останавливаются на утверждениях типа: «И это быстро потому, что используется ускорение». Мартин Сплитт рассказывает о производительности снизу вверх: он начинает с пикселя и поднимается уровень за уровнем, заканчивая компоновкой страницы.


В основе статьи – выступление Мартина на JavaScript-конференции HolyJS 2017 в Питере, где он рассказывает о том, как происходит визуализация в браузерах и что нужно делать для того, чтобы ваши сайты «летали».

Как устроен парсер Python, и как втрое уменьшить потребление им памяти

Reading time12 min
Views50K
Любой, кто изучал устройство языков программирования, примерно представляет, как они работают: парсер в соответствии с формальной грамматикой ЯП превращает входной текст в некоторое древовидное представление, с которой работают последующие этапы (семантический анализ, различные трансформации, и генерация кода).

КДПВ

В Python всё немного сложнее: парсеров два. Первый парсер руководствуется грамматикой, заданной в файле Grammar/Grammar в виде регулярных выражений (с не совсем обычным синтаксисом). По этой грамматике при помощи Parser/pgen во время компиляции python генерируется целый набор конечных автоматов, распознающих заданные регулярные выражения — по одному КА для каждого нетерминала. Формат получающегося набора КА описан в Include/grammar.h, а сами КА задаются в Python/graminit.c, в виде глобальной структуры _PyParser_Grammar. Терминальные символы определены в Include/token.h, и им соответствуют номера 0..56; номера нетерминалов начинаются с 256.

Проиллюстрировать работу первого парсера проще всего на примере. Пусть у нас есть программа if 42: print("Hello world").
Читать дальше →

Как у нас устроено A/Б-тестирование. Лекция Яндекса

Reading time12 min
Views47K
A/Б-тестирование на сервисах Яндекса проводится постоянно. «Раскатить на такую-то долю аудитории» и посмотреть на реакцию людей — настолько стандартная практика, что ни у кого в команде не возникает вопроса, зачем это нужно. А чтобы не было проблем с самим тестированием, у нас есть специальная инфраструктура для экспериментов. Подробности рассказывают разработчики Сергей Мыц и Данил Валгушев.


Сергей:
— Я попробую упрощенно описать задачу A/Б-тестирования. Есть абстрактная система с пользователями, в нее мы вносим какие-то изменения, и нужно уметь измерять в ней пользу. Пока все просто, но слишком абстрактно. Пример. Есть веб-сервис по сравнению пары фотографий котов. Пользователь должен выбрать наиболее понравившуюся фотографию. При этом он может выбрать не только левый или правый снимок, но и «против всех». Значит, мы подобрали картинки не очень хорошо. Наша задача — обоснованно улучшать сервис, доказывая это цифрами.

Information

Rating
Does not participate
Registered
Activity