В этой статье будет описан способ решения одной не очень известной задачи спортивного программирования. Решение требует всего несколько строк кода и очень эффективно, однако требует объяснения.
Читать полностью »
Новости информационных технологий - 33184
Элегантное решение задачи о спичках [спортивное программирование]
1970-01-01 в 0:00, admin, рубрики: ПесочницаЭкономика продукта. Анализ выручки
1970-01-01 в 0:00, admin, рубрики: growth hacking, бизнес-модели, Управление продуктом, финансы, финансы в ITВ прошлой статье [https://habr.com/sandbox/121807/] я рассказал о начале анализа продукта с его валовой прибыли. Продолжим подход "top-down" и разложим на составляющие выручку.
Общая картина теперь будет такой:

Криптовалюта и интернет-магазин. История подлючения и немного 54-ФЗ
1970-01-01 в 0:00, admin, рубрики: ПесочницаЗдравствуйте, дорогие хабрачитатели!
Появилась недавно задача подключить к одному интернет-магазину оплату криптовалютой. Причем не только популярными биткоинами, но и такими валютами, о которых мне раньше и слышать не приходилось. Реализовывать полноценный функционал взаимодействия с каждой криптовалютой отдельно, задача не из простых. Если для того же биткоина есть библиотеки, позволяющие начать работу практически из коробки (но без допиливания и танцев с бубном, как показывает практика, не обходится), то, например, для dogecoin нужно писать все с нуля. Так как данный вид оплаты для сайта не предполагался как основной, а скорее как фишка для рекламы и раскрутки, то и бюджет не предполагал крупной разработки. Читать полностью »
Передача массива в функцию, подсчет длины массива по указателю
1970-01-01 в 0:00, admin, рубрики: ПесочницаВ С++ существует несколько возможностей передачи массива в функцию.
- В С++ массивы можно инициализировать следующим образом:
int arr[] = {p1, p2, p3, ...}; // длина массива определяется после инициализацииКак следствие, его можно передать в функцию таким же способом:
void func(int arr[]){ //your code } - Еще один вариант — передать массив по указателю. Например:
void func(int* arr){ //your code } int arr[5] = {1, 2, 3, 4, 5};Мы привыкли обращаться к элементам массива по индексам, но попробуйте скомпилировать и запустить следующие строки:
int main(){ int arr[5] = {1, 2, 3, 4, 5}; cout << arr << endl; //в данном случае мы увидим адрес начала массива return 0; //его мы и передаем в массив }
При использовании любого из данных вариантов, перед нами становится вопрос определения длины полученного массива. Длину можно передавать через второй параметр в функцию.
Например:
void func(int* arr, int length){
//your code
}
Но в ряде задач длина входного массива может быть неизвестной. На этот случай тоже есть решение, мы можем анализировать данные, которые поступили в функцию по указателю, например:
int len(int* arr){
int count = 0;
while(*x++ < ?) count++;
return count;
}
Крайне важно понять критерий по которому мы будем оценивать содержимое. В противном случае, можно получить не совсем то, что ожидалось.
Читать полностью »
Привет, читатель.
Сегодня мы будем писать простейшего бота Telegram, который будет отвечать на команды. Такая статья была, но писали бота на Питоне.
1. Виртуальная машина хоть и долгая, но если обрабатывать события в несколько потоков, то будет работать быстро.(Вообще для многих серверов/мультиплеерных игр в одном потоке не всегда получится обрабатывать события, в Jav'e сделать это гораздо проще)
2. Наличие хорошей документации и Javadoc'ов, которые можно сделать для всех библиотек(не только для системных)
0. А что такое «бот»?
Бот — это профиль в соцсети/мессенджере(в данном случае Telegram) который отвечает на команды.( В любом случае все действия буду происходить после выполнения команды)
Тип чата с ботом — это переписка 1 на 1.
1.С чего же начинать?
Здесь качать библиотеку Telegram(обязательно with-dependiciens)
IDE можно выбрать любую, я бы порекомендовал eclipse.
Импотрируем библиотеку Телеграма и приступаем.
Читать полностью »
Стоит ли участвовать в российских IT-мероприятиях
1970-01-01 в 0:00, admin, рубрики: Исследования и прогнозы в IT, конференции, управление проектами, управление разработкойОднажды я рассказал, как съездил с докладом на TAdviser SummIT 2018, и что из этого вышло в плане нетворкинга и проверки бизнесовых гипотез для разработчика софта (кому интересно — дам ссылку, а то вдруг сочтут рекламой). Обещал сравнение саммита с двухдневным сколковским Startup Village — выполняю.
Это перевод статьи Andrew Clark. Оригинальная статься здесь.
Вступление
React Fiber — прогрессивная реализация ключевого алгоритма React. Это кульминационное достижение двухгодичных исследований команды разработчиков React.
Цель Fiber в увеличении производительности при разработке таких задач как анимация, организация элементов на странице и движение элементов. Ее главная особенность это инкрементный рендеринг: способность разделять работу рендера на единицы и распределять их между множественными фреймами.
Другие ключевые фичи включают возможность приостановки, отмены или переиспользования входящих обновлений DOM дерева, возможность приоритизации разных типов обновлений, а также — согласование примитивов.
Введение
На данный момент почти все люди знают, что такое интернет, но некоторые даже и приблизительно не представляют, как он работает и как за такое короткое время устройства находят друг друга. В этих статьях я решил разобрать основные протоколы маршрутизации, что они из себя представляют и как работают. Данная статья скорее для тех, кто только начал свой путь по сетям и стремится больше узнать о работе маршрутизаторов в небольших и средних локальных сетях (Для крупных чаще всего используется протокол OSPF). Первым разберем протокол RIP. Но сначала немного о маршрутизации…
Маршрутизация
Маршрутизация сама по себе — поиск маршрута доставки пакета между сетями через транзитные узлы — маршрутизаторы, которые позиционируют себя как многофункциональные устройства для разделения сетей. Вся сеть интернет разделена на крупные автономные системы (AS), которые связываются и узнают друг о друге с помощью внешних протоколов маршрутизации,
Читать полностью »
Это цикл статей о том, как распознавать задачи, решаемые жадными алгоритмами, писать строгие доказательства корректности этих алгоритмов, а также о том, как распознавать задачи для которых жадные алгоритмы не применимы.
Вступление
О жадных алгоритмах многие знают еще со школы с университета. В любом курсе по алгоритмам выделена хотя бы одна небольшая глава посвященная жадным алгоритмам. В частности, в книге Томаса Кормена «Алгоритмы. Построение и анализ» освящается эта тема.
В данной статье будет одна задача, для которой будет приведено строгое доказательство на почти формальном математическом языке.
Читать полностью »
Новый вид мобильного мошенничества, или как не просадить маркетинговый бюджет
1970-01-01 в 0:00, admin, рубрики: ПесочницаЧто произошло?
В сентябре компания AppsFlyer (специализируется на мобильной атрибуции и маркетинговой аналитике) опубликовала исследование о новом и довольно активном виде фрода. Вообще под фродом подразумевают много разных видов IT-мошенничества, но в нашем случае — это фейковые установки приложений со сбросом DeviceID. Ущерб от них оказался гораздо значительнее, чем предполагалось ранее, а именно — 50 процентов от всего фрода с установками (и обходится это рекламодателям в $1,1-1,3 млрд. ежегодно). Работает он так: преступники, используя мобильные фермы (клик-фермы) из тысяч устройств после каждой установки приложения сбрасывают идентификатор мобильного устройства (DeviceID), и потому даже после множества установок гаджет все равно будет определяться как новый.

По данным AppsFlyer, такой вид мошенничества отнимает у маркетологов до 10% бюджета, так как в среднем одна из 10 неорганических установок сейчас является мошеннической. Это в равной степени затрагивает как iOS, так и Android, наносит ущерб 16 из 100 ведущих рекламных сетей — в них 20% обеспечиваемых установок приложений являются мошенническими — и не ограничивается определённой страной или регионом. Хотя, стоит сказать, что в России такой вид фрода лютует не так, как в Штатах, ведь мошенники нацеливаются на страны с высокими возмещениями CPI (ценами за установку) и большим количеством кампаний и пользователей, чтобы затеряться в гигантском потоке трафика и остаться незамеченными для рекламодателей и сетей.
В процентном соотношении это выглядит так:


