Pull to refresh
2
0
Крошкин Андрей @andrium

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

Send message

Двоичные и побитовые операции в PHP

Reading time12 min
Views12K

Недавно я обратил внимание, что в разных проектах мне приходится активно писать побитовые операции на PHP. Это очень интересное и полезное умение, которое пригодится начиная с чтения двоичных файлов до эмуляции процессоров.

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

А теперь к делу! В этой статье я расскажу много интересного о побитовых операциях, двоичной и шестнадцатеричной обработке, которые будут полезны в ЛЮБОМ языке.
Читать дальше →
Total votes 41: ↑38 and ↓3+35
Comments11

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

Reading time14 min
Views282K
Сегодня мы приняли решение отключить расширения SaveFrom.net, Frigate Light, Frigate CDN и некоторые другие, установленные у пользователей Яндекс.Браузера. Совокупная аудитория этих инструментов превышает 8 млн человек.

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



Читать дальше →
Total votes 369: ↑360 and ↓9+351
Comments508

Программисту. 10 ценных GitHub-репозиториев

Reading time3 min
Views44K
GitHub — это платформа, дающая программистам отличные инструменты для организации работы над кодом. Но в GitHub-репозиториях, помимо кода, можно найти массу ценных учебных материалов. Я, например, занимаюсь разработкой ПО и постоянно ищу репозитории, которые могут чем-то мне пригодиться. Вот 10 моих любимых GitHub-проектов.


Читать дальше →
Total votes 73: ↑55 and ↓18+37
Comments9

Как вернуть Windows Photo Viewer в Windows 10

Reading time3 min
Views115K


Начиная с Windows 10, за открытие файла с изображением отвечает уже не Windows Photo Viewer. Вам предлагают новую программу, Microsoft Photos, в которой полно проблем с быстродействием и надёжностью.

И хотя Windows Photo Viewer ушёл в отставку, это всё же простая и небольшая программа для просмотра цифровых фото на ПК. В отличие от Microsoft Photos, Windows Photo Viewer работает быстрее и облегчает просмотр фотографий, хранящихся у вас на локальных носителях.

Если вы обновляли систему с Windows 7 или 8, тогда вам будет легко вернуть назад Windows Photo Viewer – нужно лишь сменить настройки приложений по умолчанию.
Читать дальше →
Total votes 27: ↑16 and ↓11+5
Comments41

Основы работы с Neo4j в браузере

Reading time3 min
Views16K

В статье рассматривается как начать работать с графовой СУБД Neo4j, используя Neo4j Browser. Это руководство может быть полезным как дополнение к книге Редмонда и Уилсона "Семь баз данных за семь недель", так как рассматриваемый веб-интерфейс был полностью переработан, а также к книге "Графовые базы данных" (Робинсон, Вебер, Эифрем), так как в ней этот вопрос вообще не рассматривается. Статья рассчитана на приступающих к изучению Neo4j. Те, кто уже знаком с этой СУБД, могут смело её пропустить.


Neo4j Browser: home screen

Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments3

BudgetTracker — ещё один open-source инструмент для личного учета финансов

Reading time5 min
Views12K

Почему?


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


Какой тренд? Я богатею, или беднею?


КДПВ

image

Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments15

А компетентен ли советчик? Проблемы рекомендации «не изобретай велосипед»

Reading time3 min
Views11K

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


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


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


Упустить из виду этот принцип, все равно, что признаться в собственной неспособности решать прикладные задачи.


Рассмотрим несколько случаев.


image
Источник

Читать дальше →
Total votes 51: ↑44 and ↓7+37
Comments36

Мониторинг сервисов с Prometheus

Reading time10 min
Views167K
Prometheus

В предыдущих публикациях мы уже затрагивали вопросы мониторинга и сбора метрик. В сегодняшней статье мы хотели бы вернуться к этой теме и рассказать об интересном инструменте под названием Prometheus. Он был создан в 2012 году в качестве внутренней системы мониторинга небезызвестного проекта SoundCloud, но впоследствии получил более широкое распространение.
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments13

Подробности о GraphQL: что, как и почему

Reading time19 min
Views91K
GraphQL сейчас, без преувеличения, это — последний писк IT-моды. И если вы пока не знаете о том, что это за технология, о том, как ей пользоваться, и о том, почему она может вам пригодиться, значит статья, перевод которой мы сегодня публикуем, написана специально для вас. Здесь мы разберём основы GraphQL на примере реализации схемы данных для API компании, которая занимается попкорном. В частности, поговорим о типах данных, запросах и мутациях.


Читать дальше →
Total votes 27: ↑23 and ↓4+19
Comments23

Что такое быть Team Leader

Reading time8 min
Views69K
Всем привет! Меня зовут Артур Дементьев, я бы хотел поделиться личным опытом и написать несколько статей о том, что из себя представляет менеджмент в IT. А также рассказать о том, на какие грабли наступал и каких ошибок можно было избежать. Все статьи я буду писать, основываясь на своём опыте работы в разных IT-компаниях, в которых я начинал как Team Leader (TL) команды из нескольких человек. В одной из них с нуля вырастил маленький отдел в большую IT-структуру и дорос до CTO.

Проблемы есть во многих компаниях, часто люди допускают ошибки. Именно общение с ними сподвигло меня на написание статьи. В ближайшем времени, я постараюсь продолжить публикации. Надеюсь, они будут полезны TL, CTO, руководителям департаментов или тем, кто только собирается ими стать. А начну я с рассказа о том, что такое быть Team Leader, это будет взгляд изнутри.
Читать дальше →
Total votes 48: ↑40 and ↓8+32
Comments25

Всё, что нужно знать об автоматических переносах в CSS

Reading time6 min
Views46K


Недавно меня пригласили выступить с вечерней лекцией в Типографском обществе Австрии. Для меня стало большой честью последовать по стопам таких светил, как Мэтью Картер, Вим Краувел, Маргарет Калверт, Эрик Шпикерман и покойная Фреда Сэк.

Я рассказал о некоторых золотых правилах типографики в интернете, а потом во время секции QA меня спросили о текущей ситуации с автоматическими переносами в вебе. Это хороший вопрос, особенно с учётом того, что немецкий язык знаменит часто используемыми длинными существительными (например, Verbesserungsvorschlag означает «предложение для улучшения»), поэтому переносы широко используются в большинстве письменных носителей.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments11

NoVerify: линтер для PHP от Команды ВКонтакте теперь в открытом доступе

Reading time8 min
Views22K


Расскажу, как нам удалось написать линтер, который получился достаточно быстрым, чтобы проверять изменения во время каждого git push и делать это за 5−10 секунд при кодовой базе в 5 миллионов строк на PHP. Мы назвали его NoVerify.

NoVerify поддерживает базовые вещи вроде перехода к определению и поиску использований и умеет работать в режиме Language Server. В первую очередь наш инструмент ориентирован на поиск потенциальных ошибок, но умеет проверять и стилистику. Сегодня его исходные коды появились в open-source на GitHub. Ищите ссылку в конце статьи.
Читать дальше →
Total votes 54: ↑52 and ↓2+50
Comments54

Пользовательское вознаграждение авторам Хабра

Reading time2 min
Views30K
Хабр уже давно поощряет активных авторов в рамках ППА (Программа Поощрения Авторов). Однако в ней могут участвовать далеко не все желающие — сначала нужно «наработать» определённый стаж. И далеко не всем хватает терпения, чтобы пройти эту дистанцию.



Разгребая бэклог хотелок, мы обратили внимание на функцию пользовательского поощрения (доната), в рамках которого вознаградить автора (любого) могли бы сами пользователи. Опрос показал, что эта функция действительно будет востребованной, поэтому мы решили её реализовать.
Читать дальше →
Total votes 320: ↑320 and ↓0+320
Comments254

Полем грядки вовремя, или 5 признаков скрытых проблем в команде

Reading time6 min
Views9.9K
Проблем в коммуникациях очень много и их решение всегда очень специфично для каждого случая. Сложность с некоторыми проблемами состоит в том, что они скрыты и дают о себе явно знать, когда уже слишком трудно, или поздно, что-то исправлять. Я вспомнил пять случаев, с которыми лично сталкивался. Не все получилось решить, не все решал осознано. Под катом найдёте пять историй, иллюстрирующие пять признаков проблем. Каждую историю я дополнил очень сухой подсказкой об исправлении потому, что реальное решение очень субъективно.
Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments14

defi.js — реактивная библиотека, основанная на Object.defineProperty

Reading time4 min
Views5.5K
defi.js

defi.js — это библиотека, включающая в себя дюжину функций, которые добавляют интересные фичи любым JavaScript объектам с помощью геттеров и сеттеров.


Гифка для привлечения внимания (3.5МБ)
Репозиторий


В качестве Hello World создадим небольшой виджет, состоящий из поля имени, фамилии и приветствия (демо).


<input class="first">
<input class="last">
<output class="greeting"></output>

// данные по умолчанию
const obj = {
  first: 'John',
  last: 'Doe'
};

// слушаем изменения в свойствах first и last
// если произошло изменение, сообщим об этом в консоли
defi.on(obj, 'change:first', () => console.log('First name is changed'));
defi.on(obj, 'change:last', () => console.log('Last name is changed'));

// автоматически генерируем приветствие (свойство greeting) каждый раз,
// когда first или last изменились
defi.calc(obj, 'greeting', ['first', 'last'], (first, last) => `Hello, ${first} ${last}`);

// объявляем двусторонний байндинг между свойствами 
// и соответствующими элементами на странице
defi.bindNode(obj, {
  first: '.first',
  last: '.last',
  greeting: '.greeting'
});

В итоге, если first или last изменились, обработчики события сообщают об этом в консоли, свойство greeting автоматически обновляется, а его элемент получает новое значение (по умолчанию, "Hello, John Doe"). Это случается каждый раз, когда свойства меняются, причем не имеет значения, каким образом. Можно установить значение с помощью кода obj.first = 'Jane', либо изменив значение поля, и все остальные изменения произойдут автоматически.

Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments13

PHP-Дайджест № 147 (1 – 14 января 2019)

Reading time3 min
Views15K

Свежая подборка со ссылками на новости и материалы. В выпуске: обновления всех веток PHP, Deployer 6.4, doctrine/migrations 2.0, Psalm 3 и другие релизы, Никита Попов в JetBrains, новости PHP Internals, порция полезных инструментов, видео, и многое другое.

Приятного чтения!

Читать дальше →
Total votes 48: ↑47 and ↓1+46
Comments8

Несколько версий PHP на хосте с помощью Docker

Reading time4 min
Views10K
Часто перед разработчиками PHP встаёт задача проверить работу веб-приложения под несколько версий интерпретатора. Решить её можно разными способами. Можно банально установить разные версии PHP на один хост, но это чревато конфликтами библиотек и другими сложностями. Вторая крайность — сделать несколько изолированных виртуальных машин с разным окружением, но здесь не обойтись без чрезмерного использования аппаратных ресурсов и излишней траты времени на разворачивание рабочего окружения. На настоящий момент наиболее просто решить данную задачу можно с помощью Docker.

image
Читать дальше →
Total votes 24: ↑19 and ↓5+14
Comments28

Принципы SOLID, о которых должен знать каждый разработчик

Reading time11 min
Views316K
Объектно-ориентированное программирование принесло в разработку ПО новые подходы к проектированию приложений. В частности, ООП позволило программистам комбинировать сущности, объединённые некоей общей целью или функционалом, в отдельных классах, рассчитанных на решение самостоятельных задач и независимых от других частей приложения. Однако само по себе применение ООП не означает, что разработчик застрахован от возможности создания непонятного, запутанного кода, который тяжело поддерживать. Роберт Мартин, для того, чтобы помочь всем желающим разрабатывать качественные ООП-приложения, разработал пять принципов объектно-ориентированного программирования и проектирования, говоря о которых, с подачи Майкла Фэзерса, используют акроним SOLID.



Материал, перевод которого мы сегодня публикуем, посвящён основам SOLID и предназначен для начинающих разработчиков.
Читать дальше →
Total votes 42: ↑33 and ↓9+24
Comments33

Про износ SSD на реальных примерах

Reading time3 min
Views106K

Год назад мы добавили в наш агент сбор метрик из S.M.A.R.T. атрибутов дисков на серверах клиентов. В тот момент мы не стали добавлять их в интерфейс и показывать клиентам. Дело в том, что метрики мы снимаем не через через smartctl, а дергаем ioctl прямо из кода, чтобы этот функционал работал без установки smartmontools на серверы клиентов.
Агент снимает не все доступные атрибуты, а только самые значимые на наш взгляд и наименее вендор-специфичные (иначе пришлось бы поддерживать базу дисков, аналогичную smartmontools).
Сейчас наконец дошли руки до того, чтобы проверить, что мы там наснимали. А начать было решено с атрибута "media wearout indicator", который показывает в процентах оставшийся ресурс записи SSD. Под катом несколько историй в картинках о том, как расходуется этот ресурс в реальной жизни на серверах.

Читать дальше →
Total votes 102: ↑97 and ↓5+92
Comments169

Обнаружен универсальный метод сортировки сложной информации

Reading time7 min
Views22K


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

Это пример задачи поиска "ближайшего соседа", которую широко изучают в информатике. Дан набор сведений и новая точка, и требуется найти, к какой точке из уже существующих она окажется ближайшей? Такой вопрос возникает во множестве повседневных ситуаций в таких областях, как исследование генома, поиск картинок и рекомендации на Spotify.

Но, в отличие от примера с кафе, вопросы о ближайшем соседе часто оказываются очень сложными. За последние несколько десятилетий величайшие умы среди специалистов по информатике брались за поиски наилучших способов решения подобной задачи. В частности, они пытались справиться с усложнениями, появляющимися из-за того, что в различных наборах данных могут быть очень разные определения «близости» точек друг к другу.
Читать дальше →
Total votes 43: ↑37 and ↓6+31
Comments19
1
23 ...

Information

Rating
Does not participate
Location
Владимир, Владимирская обл., Россия
Date of birth
Registered
Activity