Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

«ВКонтакте» обнаружила пользователей, которые смотрят по 2 тысячи клипов за ночь

Социальные сети и сообщества
image

«ВКонтакте» начала предупреждать пользователей «Клипов» о том, что им нужно иногда отдыхать от сервиса. Внутреннее исследование компании выявило тех, кто смотрит до 2 тысяч роликов за одну ночь.
Читать дальше →
Всего голосов 13: ↑10 и ↓3 +7
Просмотры9.8K
Комментарии 43

Объединение JS-файлов 2.0 (1/2)

Разработка веб-сайтов
В последнее время стало модно объединять все внешние JavaScript-файлы вашего сайта в один большой, загружаемый один раз и навсегда. Это, скажем прямо, хорошо — браузер не делает сто миллионов запросов на сервер для отображения одной страницы 1, скорость загрузки повышается, пользователи счастливы, разработчики отдыхают.
Как всегда, в бочке мёда есть ложка дёгтя — в объединённый файл в этом случае попадает много того, что при первом запросе можно было бы и не загружать.2 Здесь должна была быть ссылка на хабратопик с соответствующим обсуждением. Успешно потеряна. Чаще всего для борьбы с этим предлагают выкидывать ненужные части руками… Лично у меня перспектива каждый раз перелопачивать несколько десятков (а то и сотен 3) килобайт JavaScript кода вызывает острое нежелание работать — а у вас?
под катом: описание простейшего алгоритма разрешения зависимости между модулями
Что можно сделать?
Всего голосов 34: ↑29 и ↓5 +24
Просмотры2.6K
Комментарии 70

Объединение JS-файлов 2.0 (2/2)

Разработка веб-сайтов
Часть 1.

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

Доблестно решаем созданную нами проблему
Всего голосов 22: ↑19 и ↓3 +16
Просмотры855
Комментарии 10

Компиляция QT-программы под Windows — зависимости

Qt
Ради интереса решил пощупать Qt.

Соответственно, скачал Qt Creator, создал проектик, поигрался с экшнами и прочим. И захотелось проектик этот собрать в .exe-файл.

Дебаг в рамках Creator выполнялся идеально, а вот после Build — .exe выдал мне требование зависимости mingwm10.dll.

Полез в Google, и после некоторого времени поиска сообразил скопировать

C:\QT\QTCreator\bin\mingwm10.dll, а так же
C:\QT\QTCreator\qt\bin\QtCore4.dll
C:\QT\QTCreator\qt\bin\QtGui4.dll

в папку с билдом. Только после этого и заработало.

Но остаётся проблема последующего распространения программы. Неужели для того, чтобы передать другому человеку своё творение размером в 100 килобайт, надо делать инсталлер, чтобы закидывать вышеуказанные файлы в System32?

Уважаемые знатоки, просвятите меня — разве никак нельзя собрать проект вместе с зависимостями?
Может, как-то можно уменьшить объём 13-ти мегабайт библиотек для работы 100 килобайтной программы?

UPD: Знатоки пишут, что библиотеки обязательны.

Выбор невелик тогда — или паковать NSISом (получилось 4.5 мегабайта на пустой проект), или же делать сетевой инсталлер с вспомогательной программкой, которая будет тянуть зависимости, или же делать solid — как есть.

Даже если собирать библиотеки static — то получится просто раздутый .exe-файл
Всего голосов 13: ↑10 и ↓3 +7
Просмотры25.9K
Комментарии 33

Семантическое управление версиями 1.0.0-rc.1

Разработка веб-сайтов
Перевод
В мире разработки программного обеспечения, существует страшное место, называемое «ад зависимостей». Чем больше ваша система, тем больше шанс, что в один из дней вы попадете в эту ловушку.

В системе с большим количеством зависимостей, выпуск новых пакетов может быстро превратиться в кошмар. Если зависимости слишком прочные, вы не можете обновить пакет, не обновив при этом версии всех зависимых пакетов. Если зависимости слишком свободные, у вас возникнут проблемы с распущенностью версий. «Ад зависимостей», это когда слишком прочные, или наоборот, слишком свободные зависимости не дают вам легко и безопасно развивать ваш проект.
Читать дальше →
Всего голосов 47: ↑42 и ↓5 +37
Просмотры11.3K
Комментарии 5

Параллельное выполнение зависимых задач и синхронизация с условными переменными в shell

TrueVDSПрограммированиеСистемное программирование
Как синхронизировать параллельные шелл-процессы, используя named pipes (FIFO-файлы) в качестве условных переменных. Как выполнить параллельно зависимые задач в топологическом порядке с минимумом средств: POSIX shell, mkfifo, POSIX kernel. Как параллельный запуск ускоряет загрузку встраиваемых систем и *BSD (rc-этап FreeBSD с 27 до 7 секунд) или старт приложений в пользовательских контейнерах Docker, LXC и jail. Как это повышает аптайм в отказоустойчивых кластерах Jet9.
Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Просмотры11.2K
Комментарии 10

NPM и left-pad: мы разучились программировать?

Разработка веб-сайтовJavaScriptПрограммирование
Перевод
Автор — Дэвид Хейни (David Haney), ведущий инженер-программист Stack Overflow

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

Простой пакет NPM под названием left-pad был установлен как зависимость в React, Babel и других пакетах. Модуль, который на момент написания этого поста, имеет 11 звёзд на Github (сейчас 323 — прим.пер). Весь пакет состоит из 11 простых строчек, которые реализуют примитивную функцию вставки пробелов в левой части строк. Если какие-то из ссылок когда-нибудь умрут, вот его код:

module.exports = leftpad;
function leftpad (str, len, ch) {
  str = String(str);
  var i = -1;
  if (!ch && ch !== 0) ch = ' ';
  len = len - str.length;
  while (++i < len) {
    str = ch + str;
  }
  return str;
}
Что меня беспокоит, так это такое большое количество пакетов, где установлена зависимость от простой функции набивки строки пробелами, вместо того чтобы потратить 2 минуты и написать эту базовую функцию самому.
Читать дальше →
Всего голосов 148: ↑127 и ↓21 +106
Просмотры98.6K
Комментарии 273

NPM запретил отзывать без разрешения open-source модули старше 24 часов

Разработка веб-сайтовOpen sourceJavaScriptNode.JS
Пакетный менеджер NPM на прошлой неделе стал причиной сумятицы в связи с исчезновением маленького модуля left-pad, на который были установлены зависимости в Node, React, Babel и тысячах других пакетов. Чтобы не допустить такого в будущем, сейчас администрация NPM внесла изменения в правила. По новым правилам, автоматический отзыв модуля возможен только в течение 24 часов после публикации на сервере NPM. После этого времени отзыв допускается только с разрешения администрации.
Читать дальше →
Всего голосов 32: ↑27 и ↓5 +22
Просмотры25.7K
Комментарии 164

JetBrains Night в Москве. Видео. Как CLion справляется со сложностями языка C++

JetBrainsПрограммированиеC++
29 сентября в Москве прошла мини-конференция JetBrains Night: 7 часов разработчики из JetBrains рассказывали разработчикам из других компаний о том, что компания делает, зачем, и что будет делать дальше, а потом отвечали на вопросы, обсуждали общие проблемы и вообще делились опытом (т.е. слушали, как разработчики из других компаний рассказывают им о том, что они делают и почему им удобно или пока еще не очень удобно делать это с помощью того, что делает JetBrains).

На Хабре мы постепенно публикуем видео всех докладов, чтобы можно было в комментариях обсудить то, что не успели обсудить на JetBrains Night, особенно с теми, кто не смог приехать лично.

Краткое содержание предыдущих серий:

» Дмитрий Жемеров про язык Kotlin;
» Максим Мазин и Валерия Андрианова про интеграцию серверных продуктов и использование новых Agile-досок;
» Сергей Пак. Первые шаги с TeamCity DSL.

Сегодня публикуем видео, где Дмитрий Кожевников рассказывает, как CLion справляется
Читать дальше →
Всего голосов 18: ↑16 и ↓2 +14
Просмотры5.6K
Комментарии 15

Управление фермой Android-устройств. Лекция в Яндексе

ЯндексРазработка мобильных приложенийРазработка под AndroidТестирование мобильных приложений
Чем популярнее ваше приложение, тем длиннее список устройств, на которых его запускают. В какой-то момент это становится проблемой: некоторые баги загадочным образом воспроизводятся только на конкретной модели, и приходится тестировать продукт на всё большем числе девайсов.

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


Читать дальше →
Всего голосов 31: ↑30 и ↓1 +29
Просмотры12.4K
Комментарии 5

API на Swift за пять минут. Лекция в Яндексе

ЯндексAPIПромышленное программированиеSwift
Есть мнение, что Swift — особенно благодаря развитию в опенсорсе — уже сейчас применим за рамками софта для платформ Apple. Наши коллеги из «Рамблера», включая разработчика Самвела Меджлумяна, даже пробуют этот язык в качестве серверного решения. На встрече сообщества CocoaHeads Самвел перечислил готовые продукты для построения сервера на Swift, сравнил их между собой и показал короткое демо.


Читать дальше →
Всего голосов 43: ↑39 и ↓4 +35
Просмотры21.6K
Комментарии 5

Ещё один инструмент для проверки ваших npm зависимостей — wtfwith

JavaScriptNode.JS
Вы как-нибудь задумывались, сколько версий одной и той же библиотеки затягивает ваша клиентская или серверная сборка? Мне вот в какой-то момент стало интересно. Навскидку найти для этого готовый инструмент не получилось, а смотреть глазами package-lock слишком утомительно. Как мы знаем — в любой непонятной ситуации нужно писать свой npm пакет, поэтому я именно это и сделал… Дальше в посте я рассмотрю результат анализа живого проекта и сделаю пару спорных выводов.

Ну и никак нельзя обойтись без этой классической картинки:

Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Просмотры5.6K
Комментарии 2

Бэкдор в одной из зависимостей библиотеки EventStream

GlobalSignИнформационная безопасностьOpen sourceGitHubКриптовалюты


Еженедельно из репозитория NPM загружается более 1,9 миллионов копий библиотеки EventStream. Она используется во многих крупных проектах для простой и удобной работы с потоками в Node.JS. Среди прочих, эта библиотека обрабатывает потоки и в популярном криптокошельке Copay (впрочем, об этом позже).

21 ноября 2018 года случилось странное. GitHub-пользователь @FallingSnow сообщил, что в одной из зависимостей event-stream спрятан вредоносный код, который фактически представляет собой бэкдор неизвестной функциональности.

Пользователи начали разбираться, откуда взялся этот вредоносный код. Это очень интересная и поучительная история. К сожалению, она может иметь долговременные последствия для многих open-source проектов.
Читать дальше →
Всего голосов 52: ↑51 и ↓1 +50
Просмотры18.4K
Комментарии 51

Будни MT_FREE: несколько историй про влияние сторонних сервисов на работу публичного Wi-Fi

MaximaTelecomСетевые технологииБеспроводные технологии


Интернет — большая и динамичная среда, где всё друг с другом тем или иным способом связано и может друг на друга влиять. Такая зависимость, когда небольшое изменение в одной части системы может привести к полному изменению другой, в народе называют «эффектом бабочки». Эффект прекрасно иллюстрирует, как один «удачно брошенный на пульт валенок» способен обрушить крупный сервис и заодно еще парочку совсем чужих… Об этом и поговорим.
Читать дальше →
Всего голосов 21: ↑17 и ↓4 +13
Просмотры8.5K
Комментарии 119

Как секретный ключ Huawei попал в прошивки маршрутизаторов Cisco

GlobalSignИнформационная безопасностьOpen sourceGitHubИнтернет вещей


Разработчики сканера IoT Inspector периодически проводят рутинную проверку прошивок разных производителей. Иногда находят уязвимости в устройствах Интернета вещей. Но последняя находка особенно удивительна. В прошивке маршрутизатора Cisco SG250 сканер нашёл несколько сертификатов и соответствующий секретный ключ сотрудника Futurewei Technologies, американской дочерней компании Huawei Technologies, по имени Гарри Ву (Garry Wu) с электронным адресом gary.wu1@huawei.com.

Но как они попали в прошивку маршрутизатора Cisco?
Читать дальше →
Всего голосов 23: ↑23 и ↓0 +23
Просмотры32.9K
Комментарии 8

Семантика средств разрешения зависимостей

Конференции Олега Бунина (Онтико)Open sourceПрограммированиеScalaОтладка
Перевод

Средство разрешения зависимостей


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


Ограничения обычно задаются именами модулей и номерами версий. В экосистеме JVM для модулей Maven будет ещё указано наименование организации (group id). Кроме того, ограничения могут содержать диапазоны версий, исключаемые модули, переопределения версий и т.п.


Три основных категории пакетов представлены OS-пакетами (Homebrew, Debian-пакеты, и т.п.),
модулями для конкретных языков программирования (CPAN, RubyGem, Maven, etc) и расширения, специфичные для приложения (Eclipse plugins, IntelliJ plugins, VS Code extensions).

Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Просмотры1.7K
Комментарии 1

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

Монетизация мобильных приложенийЗаконодательство в ITИгры и игровые приставки
Перевод

Шеллз — медсестра из Хьюстона, ей 37 лет. Не менее двух часов в день они с мужем тратят на игру для смартфонов под названием Jackpot Magic.

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

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

Однако это не помешало Шеллз и её мужу всего за пару лет потратить на игру примерно 150 тысяч долларов. Она попросила использовать её внутриигровое имя, чтобы её семья не узнала, сколько денег она потратила на игру.

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

Jackpot Magic — это приложение, созданное расположенной в Сиэтле компанией Big Fish Games, одной из лидеров в отрасли социальных игр «free-to-play», в которые некоторые люди вложили тысячи долларов. У Big Fish Games есть ещё одно подобное приложение под названием Big Fish Casino. Оба считаются видеоиграми, что позволяет этой и другим компаниям не подпадать в США под жёстко регулируемую категорию азартных игр.
Читать дальше →
Всего голосов 28: ↑28 и ↓0 +28
Просмотры15.1K
Комментарии 51

Избегайте внедрения внешних библиотек в свой проект

ПрограммированиеРазработка под Android
Из песочницы
Часто можно услышать фразу: «Зачем писать свой велосипед? Возьми готовую либу и пользуйся! За тебя уже все написали». Особенно часто подобные выражения слышат начинающие разработчики. При решении любой задачи они начинают смотреть готовые либы и бездумно тянуть их в свой проект. В этой статье Вы узнаете к каким последствиям может привести бездумное внедрение сторонних библиотек.
Читать дальше →
Всего голосов 24: ↑15 и ↓9 +6
Просмотры5.8K
Комментарии 37

Человечная декомпозиция работы

ПрограммированиеАнализ и проектирование системПроектирование и рефакторингУправление разработкойУправление персоналом
🔥 Технотекст 2020

img


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

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

7 Кругов SPM или как сделать модульное приложение на Swift Package Manager

e-LegionРазработка под iOSXcodeSwift
Из песочницы

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

Возможно, у многих возникнет вопрос:  “Зачем разбивать с помощью SPM?”. Ведь можно просто создавать подпроекты. Можно, но в использовании SPM для разбиения есть несколько преимуществ:

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Просмотры2.5K
Комментарии 1
1