Новости информационных технологий - 26657

Ни одно приложение и BI система на данный момент не может существовать без базы данных, наиболее популярными по крайней мере из бесплатных СУБД являются MySQL и PostgreSQL.

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

Читать полностью »

Я учусь на третьем курсе одного из московских вузов, в котором абитуриентам обещают сделать из них широкопрофильных специалистов в сфере IT уже через 4 года. Хотелось бы подробнее написать, как все происходит на самом деле.

Преподаватели

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

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

Кроме того, преподаватели часто недостаточно мотивированы, как и сами студенты. Как только некоторые из них видят, что их предмет не вызывает особого интереса у студентов, они всячески начинают развлекать их чем-то другим. Например, у меня был препод, который вел у нас предмет с необходимостью как можно больше практиковаться, но практики не было вообще… Зато были истории про его жизнь в большом количестве, совершенно не связанные с предметом. Истории вполне уместны, но не тогда, когда они занимают большую часть учебного процесса.
Ну есть, конечно, совершенно другие преподаватели. Их легко отличить, потому что сразу видно, что им нравится учить нас и они относятся к этому, как к важной миссии, а не как к рутине. Таких у нас было 5-6 за четыре семестра (при том, что в общей сложности, было больше 20). К сожалению, классный препод до сих пор остается скорее исключением, чем правилом. Но о том, что же делает его классным, немного позже.

Читать полностью »

Что произошло?

В сентябре компания AppsFlyer (специализируется на мобильной атрибуции и маркетинговой аналитике) опубликовала исследование о новом и довольно активном виде фрода. Вообще под фродом подразумевают много разных видов IT-мошенничества, но в нашем случае — это фейковые установки приложений со сбросом DeviceID. Ущерб от них оказался гораздо значительнее, чем предполагалось ранее, а именно — 50 процентов от всего фрода с установками (и обходится это рекламодателям в $1,1-1,3 млрд. ежегодно). Работает он так: преступники, используя мобильные фермы (клик-фермы) из тысяч устройств после каждой установки приложения сбрасывают идентификатор мобильного устройства (DeviceID), и потому даже после множества установок гаджет все равно будет определяться как новый.

image

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

image

Читать полностью »

Это цикл статей о том, как распознавать задачи, решаемые жадными алгоритмами, писать строгие доказательства корректности этих алгоритмов, а также о том, как распознавать задачи для которых жадные алгоритмы не применимы.

Вступление

О жадных алгоритмах многие знают еще со школы с университета. В любом курсе по алгоритмам выделена хотя бы одна небольшая глава посвященная жадным алгоритмам. В частности, в книге Томаса Кормена «Алгоритмы. Построение и анализ» освящается эта тема.

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

Введение

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

Маршрутизация

Маршрутизация сама по себе — поиск маршрута доставки пакета между сетями через транзитные узлы — маршрутизаторы, которые позиционируют себя как многофункциональные устройства для разделения сетей. Вся сеть интернет разделена на крупные автономные системы (AS), которые связываются и узнают друг о друге с помощью внешних протоколов маршрутизации,
Читать полностью »

Это перевод статьи Andrew Clark. Оригинальная статься здесь.

Вступление

React Fiber — прогрессивная реализация ключевого алгоритма React. Это кульминационное достижение двухгодичных исследований команды разработчиков React.

Цель Fiber в увеличении производительности при разработке таких задач как анимация, организация элементов на странице и движение элементов. Ее главная особенность это инкрементный рендеринг: способность разделять работу рендера на единицы и распределять их между множественными фреймами.

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

Читать полностью »

Однажды я рассказал, как съездил с докладом на TAdviser SummIT 2018, и что из этого вышло в плане нетворкинга и проверки бизнесовых гипотез для разработчика софта (кому интересно — дам ссылку, а то вдруг сочтут рекламой). Обещал сравнение саммита с двухдневным сколковским Startup Village — выполняю.

image
Читать полностью »

Привет, читатель.

Важно для прочтения!

Если ты не против, то изучи ООП и Jav'y прежде, чем учить другие библиотеки. Ибо ты не будешь браться за физику, не выучив математику. Тут то же самое.

Сегодня мы будем писать простейшего бота Telegram, который будет отвечать на команды. Такая статья была, но писали бота на Питоне.

Почему я выбрал именно Jav'y

Java в плане ботов, серверов, плагинов да и вообще программ будет удобнее для меня.

1. Виртуальная машина хоть и долгая, но если обрабатывать события в несколько потоков, то будет работать быстро.(Вообще для многих серверов/мультиплеерных игр в одном потоке не всегда получится обрабатывать события, в Jav'e сделать это гораздо проще)

2. Наличие хорошей документации и Javadoc'ов, которые можно сделать для всех библиотек(не только для системных)

0. А что такое «бот»?

Бот — это профиль в соцсети/мессенджере(в данном случае Telegram) который отвечает на команды.( В любом случае все действия буду происходить после выполнения команды)

Тип чата с ботом — это переписка 1 на 1.

1.С чего же начинать?

Здесь качать библиотеку Telegram(обязательно with-dependiciens)

IDE можно выбрать любую, я бы порекомендовал eclipse.

Импотрируем библиотеку Телеграма и приступаем.
Читать полностью »

В С++ существует несколько возможностей передачи массива в функцию.

  1. В С++ массивы можно инициализировать следующим образом:
    int arr[] = {p1, p2, p3, ...}; // длина массива определяется 
    после инициализации

    Как следствие, его можно передать в функцию таким же способом:

    void func(int arr[]){
    //your code
    }
  2. Еще один вариант — передать массив по указателю. Например:
    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;
}

Крайне важно понять критерий по которому мы будем оценивать содержимое. В противном случае, можно получить не совсем то, что ожидалось.
Читать полностью »

Здравствуйте, дорогие хабрачитатели!

Появилась недавно задача подключить к одному интернет-магазину оплату криптовалютой. Причем не только популярными биткоинами, но и такими валютами, о которых мне раньше и слышать не приходилось. Реализовывать полноценный функционал взаимодействия с каждой криптовалютой отдельно, задача не из простых. Если для того же биткоина есть библиотеки, позволяющие начать работу практически из коробки (но без допиливания и танцев с бубном, как показывает практика, не обходится), то, например, для dogecoin нужно писать все с нуля. Так как данный вид оплаты для сайта не предполагался как основной, а скорее как фишка для рекламы и раскрутки, то и бюджет не предполагал крупной разработки. Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js