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

Вступление

Уважаемые Хабрахабровцы, хочу поделиться с Вами своей разработкой для OS Android.
Данная статья ориентирована, во-первых, на новичков в андроид-разработке, во-вторых, на людей, которым интересна идея о безопасности общения по сети, в-третьих, просто на тех кому интересно.

Суть

Моя цель написать мессенджер, который позволил бы, в коей мере, уйти от всемирной слежки. Уйти? — спросите Вы. Да именно так я представляю себе, мое творение. Потому как общение клиента с сервером реализуется на сокетах, с применением ГОСТ-товского шифрования «МАГМА» (блочный симметричный).

Программный комплекс (назовем его комплексом, ибо он состоит из двух модулей, написанных собственными руками) имеет в своем составе следующие компоненты: клиентская часть, написанная в AndroidStudio и серверная часть, написанная в IntelliJ IDEA. Клиентов мы распространяем доступными нам способами: передачей APK по BlueTooth, WatsApp, PlayMarket, да и вообще как душа пожелает и как удобно Вашей аудитории. Сервер запускаем на своем ПК, можно конечно и арендовать какой-нибудь сторонний сервер, все равно данные там хранить мы не будем. Клиенты регистрируются, авторизуются и готовы для массовых переписок. (в перспективе реализую и индивидуальное общение ТЕТ-А-ТЕТ, а также шифрование).

Недоработки

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

Хватит лирики, перейдем к кодингу

Комментарии в коде писал для себя, поэтому думаю все будет понятно и по ним.

Начнем с сервера:

1. класс описания самого «ядра» сервера
Читать полностью »

Какое-то время назад мой рабочий ноутбук отказался включаться. Просто не реагировал ни на какие попытки, включая отключение батареи. У технической поддержки ушло несколько месяцев на то, чтобы замененить практически все компоненты от матрицы до материнской платы и выяснить, что проблема была в перетертом шлейфе матрицы. Шлейф заменили, машина ожила и вернулась ко мне. Но в первый же день выяснилась интересная особенность — видимо, в пылу борьбы со шлейфом ремонтеры поломали или отключили датчик закрытия крышки. Теперь ноутбук не засыпает при закрытии крышки. Какое-то время я пытался найти способ устранить это самостоятельно, но в этот раз действенных советов Гугл и форумы комании Lenovo, к сожалению, не дали. Второй раз отдавать машину в ремонт просто страшно.

Ок, я не могу решить проблему механически, но может быть можно придумать, какой-то простой workaround. Например, я привык, уходя блокировать компьютер нажатием Win+L, почему бы не сделать shortcut для перевод машины в спящий режим? Выяснилось, что отправить машину в sleep несложно, но вот привязать это к нажатию на Ctrl+Q, например, уже не так тривиально. Можно найти софт, который будет управлять для вас этими функциями. Ну или написать свой. И так вышло, что как раз сегодня есть пара часов времени и стойкое желание попрактиковаться в программировании.

Так как программист я посредственный, то писать решил на C# в Visual Studio Community Edition. Чтобы не усложнять создал пустой проект в формате Windows Form Application с одной формой, в которую добавил контрол notifyIcon. Форму сделал невидимой сразу после старта, а в обработчк MouseDoubleClick добавил код включения и выключения видимости, чтобы форму можно было штатным образом закрыть. Эта мысль пришла не сразу, а после того, как стало понятно, что приложение должно уметь отменить регистрацию глобальных shortcut-ов после своей терминации.Читать полностью »

День добрый.

В связи с созданием большого расширяемого проекта, возникла необходимость дать разработчикам возможность собирать свои пакеты/модули под проект. (Нечто похожее на редактор Feature и WSP Package для SharePoint) Для этого необходимо создать редактор пакетов/модулей для Visual Studio. Для создания расширения под Visual Studio очень мало информации в интернете, а из официального нашел только это. Решил собрать свою библиотеку (VSExtensibilityHelper), которая бы облегчила пользователю создание VSIX дополнений. В ней собраны базовые классы для создания редакторов:

  • BaseEditorFactory — Базовый класс фабрика
  • BaseWinFormsEditorPane — Базовый класс для редактора на основе WinForms компонента
  • BaseWpfEditorPane — Базовый класс для редактора на основе WPF компонента

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

Данный пост — перевод данной статьи

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

Одним из основных принципов верстки является гибкость. А именно возможность легко вносить какие-либо изменения и ничего при этом не сломать.

Умение правильно обращаться с margin и padding играет очень большую роль в этом деле.

Основные принципы:

  1. Отступы идут от предыдущего элемента к следующему.
  2. Отступ задается последнему возможному элементу в доме.
  3. Отступы нельзя задавать для независимых элементов ( бэм блок ).
  4. У последнего элемента группы, отступ обнуляется (всегда).

Отступ задается последнему возможному элементу в доме

margin(ы) задаются от предыдущего элемента к следующему, от первого ко второму, сверху вниз, слева направо.

imageimage

Это значит.что такие свойства как margin-left и margin-top не используются ( бывают исключения ). Если нужен отступ сверху, то используется padding-top для родителя. По тому же принципу padding-left для родителя.

image

image

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

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

[1] Записывайте потраченное время. Первый шаг к тому, чтобы начать эффективно использовать время, заключается в том, чтобы выяснить, сколько времени вы тратите сейчас. В течение нескольких дней, в идеале недель, записывайте все, что вы делаете, так часто, как об этом вспоминаете. Представьте, что вы юрист, который должен четко зафиксировать время, потраченное на различные проекты: работу (в различных ее проявлениях), сон, путешествия, домашние дела, общение с семьей, просмотр телевизора и так далее. Это крайне не просто, хотя и казалось бы не сложной задачей, но у меня получилось далеко не с первого раза, но когда я зафиксировала временные показатели одной недели было очень полезно смотреть куда и сколько времени было потрачено, что помогло для дальнейшей оптимизации и делегирования.

[2] Займитесь математикой.
После того, как вы получили исходные данные, рассчитайте время по нескольким категориям. Каковы ваши ощущения? На что вы потратили слишком много времени, а на что недостаточно? Что вам больше всего нравится в вашем расписании? Что бы вы хотели изменить? Мне удобнее всего было вести данный хронометраж в обычной таблице Excel, где желтым цветом я обозначила те дела, которые мне нравятся и вдохновляют меня. И как вы можете догадаться их было не очень много, ну а если на чистоту это всего 6 дел из 127, теперь я активно работаю над тем, чтобы неприятные дела делегировать по максимуму.
Читать полностью »

Ни одно приложение и 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

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

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

Вступление

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

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


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