• Ускорение компиляции в Xcode на swift

    С ростом проекта, скорость компиляции проекта замедляется. Особенно это заметно становится, когда тестируешь программу, делая параллельно небольшие изменения в программе.

    Сначала давайте узнаем как долго компилируется проект до наших улучшений. ЧТобы это сделать надо в терминале ввести

    defaults write com.apple.dt.Xcode ShowBuildOperationDuration -bool YES

    Для этого нужно зайти в раздел Product зажать alt и нажать Clean Build Folder, а потом собрать проект заново. Мой проект компилируется 81 секунду. Посмотрим какой результат будет после улучшения.



    Нам, в первую очередь, стоит узнать какие места приводят к замедлению компиляции. По умолчанию Xcode не показывает предупреждения, где проблема, но мы можем это исправить.
    Самые «тяжелые» места большие функции и проверка типов. Поэтому нам нужно вписать эти две строчки в раздел Build Settings -> Other Swift Flags -> Debug

    -Xfrontend -warn-long-function-bodies=100
    -Xfrontend -warn-long-expression-type-checking=100

    (здесь у нас стоит 100мс время компиляции, мы можем поставить любое число)
    Наглядный рисунок


    Пример моего рабочего проекта



    У меня есть участок который занимает 13778 ms, скорее всего у вас не будет такого, но из-за специфики проекта у меня такие участки есть. Так как там построено бинарное дерево для OCR.
    Из-за глубокой вложенности друг в друга и определения типа только в самом начале, перед знаком равенства, компилятору требуется много времени понять какой перед ним тип. (Дерево занимает 30 строк, вот его часть)
    Читать дальше →
  • Как поднять Freeswitch FusionPbx на Debian 9+

    image

    Начало


    После некоторых танцев, как водится с бубном и попыток поставить FusionPBX на одну из последних версий Debian 9, решил написать заметку в след идущим дабы не тратили время зря.
    Читать дальше →
  • Искусство шаманства или кастомная прошивка для Olinuxino

    Однажды в старой коробке была найдена была найдена борда Olinuxino от Olimex на процессоре A13 от Allwinner, с 512Мб на борту. Порывшись, там же был найден старый самодельный преобразователь интерфейсов USB – uart/spi на FT-шке (который когда то делался для прошивки AVRок) и блок питания от какого то радиотелефона, все это хозяйство на фотографии ниже.


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



    Читать дальше →
  • Почему программисты должны управлять людьми

    Привет, хабровчане!

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

    А теперь задайте себе вопрос — сколько людей разных профессий из вашего окружения могут вам достаточно точно поставить задачу, чтобы она была выполнена именно так, как хотел постановщик. Я для себя на этот вопрос ответил, что это может сделать только хороший программист, который грамотно, пошагово выстроит точный алгоритм действий и учтёт все возможные нюансы, чтобы задача была выполнена правильно. Я много думал почему казалось бы на гигантские возможности человеческого интеллекта, люди очень часто ведут себя иррационально именно в ситуациях, когда перед ними стоит какая-то задача.
    Читать дальше →
  • Визит (рассказ)

    Порой забавно наблюдать, как расходятся ожидания и реальность.

    Люди мечтали о контакте с инопланетными цивилизациями. Версии контакта с пришельцами у писателей и режиссёров, в основном, сводились в двум вариантам: прилетают «злые инопланетяне» и хотят уничтожить нашу матушку Землю или прилетают «добрые инопланетяне» и идут на контакт с человечеством. В отдельных случаях рассматривались иные варианты пришельцев: пришельцы-торговцы, пришельцы-прогрессоры, пришельцы-наблюдатели. Наверно, эти версии были ближе всего к истине.
    Читать дальше →
  • Определение «токсичной личности» в ИТ

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

    В чем заключается суть проблемы?

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

    1. Коллектив считает поведение человека неприемлемым (токсичным)
    2. Человек считает действия коллектива манипулятивными (токсичными)



    Ну и кто прав? Вы можете написать в комментариях свое мнение, а я предложу вам свое.
    Читать дальше →
  • Zabbix Мониторинг динамических бэкапов

    Всем привет!

    Думаю, многие сталкивались с проблемой, когда в одну папку делается много копий бэкапов. При этом имя бэкапа не постоянное, в котором например, есть дата и время или порядковый номер.

    Встает вопрос как мониторить актуальное состояние?

    Предлагаю свое решение по реализации данной задачи с использованием Zabbix и небольшого скрипта на Python.
    Читать дальше →
  • Криптообменник в 3 шага своими руками

    Задача


    Собрать криптообменник и начать косить бабло зарабатывать. Сразу хочу оговориться, что задача стояла еще на хайпе крипты, в декабре 2017 года. То, что творится с рынком сейчас, немного печалит.



    Как и все, мы искали легкие пути и, пролистав половину рунета, поняли, что нет легких способов создать криптообменник. Ну как, они есть, но нужно выложить от 5000$ за готовое решение, которое при этом страшнее монстров из DOOM, либо нанять команду китайских программистов и делать все с нуля. С китайцами мы не договорились… Тo есть, возможно, и договорились, но мы не поняли ответа.

    Тогда мы поискали (и нашли) спецов в родном регионе. Из плюсов — понимают по-русски, из минусов — не знал, что русские специалисты так дорого стоят. Горд за отечественный рынок труда.

    Еще, на первых же этапах разработки мы определили второстепенную задачу — создать свое API, чтобы раздать его бесплатно, принести криптокультуру в массы и почистить карму перед китайцами. Вот о нем и поговорим.
    Читать дальше →
  • Как формировался публичный облик противоспутниковой системы «Нудоль»

    Не помню точно с чего именно началось, но однажды, в тогда еще публичных годовых отчетах акционерных обществ военно-промышленного комплекса России, накопилась критическая масса упоминаний некоего комплекса 14Ц033 с названием “Нудоль”. С учетом того, что озвучившие комплекс предприятия входили в концерн ПВО “Алмаз-Антей”, а также с учетом того, что имя “Нудоль” как бы намекает на один из позиционных районов системы противоракетной обороны центрального промышленного района и города Москвы А-135, было сделано предположение о том, что у нас тут речь идет о дальнем эшелоне будущей системы ПРО А-235.

    image
    Предположительно вариант СПУ П222 комплекса 14Ц033 «Нудоль» на шасси МЗКТ-79291, публикация 2015 г.

    Почему дальнем? Потому что индекс 14Ц говорит о принадлежности к космическим средствам. И индекс радиолокационной станции комплекса — 14Ц031 — так же как бы “космический”. А тут еще и индекс ракеты обнародовали — 14А042 — этот индекс относится к череде индексов ракет-носителей космических аппаратов. Но стал известен и разработчик данной ракеты — ОКБ “Новатор”. Вы знаете что-нибудь о ракетах-носителях ОКБ “Новатор”? Вряд ли. И я не знаю, но вот о зенитных ракетах и противоракетах системы ПРО А-135 разработки “Новатора” известно давно и много.
    Читать дальше →
  • Создание SVG sprite с помощью gulp

    Для начала необходимо, что-бы был установлен gulp (если он не установлен, то устанавливаем с помощью npm install gulp)

    Далее устанавливаем модуль npm install --save-dev gulp-svg-sprite

    описание модуля по ссылке www.npmjs.com/package/gulp-svg-sprite

    Далее в файле gulpfile.js создаем task в котором делаем необходимые настройки модуля, про которые можно прочесть перейдя по ссылке www.npmjs.com/package/svg-sprite

    модуль имеет множество настроек и несколько разных модов

    В данном случае нас интересует создание спрайта, который можно использовать как в HTML, так и с помощью фоновой картинки в CSS

    для этого нам потребуется mode: stack

    добавляем код в файл gulpfile.js

    //svg sprite
    var svgSprite = require('gulp-svg-sprite');
    
    gulp.task('svgSprite', function () {
        return gulp.src('app/design/frontend/Magento/newizze/web/sprite/*.svg') // svg files for sprite
            .pipe(svgSprite({
                    mode: {
                        stack: {
                            sprite: "../sprite.svg"  //sprite file name
                        }
                    },
                }
            ))
            .pipe(gulp.dest('app/design/frontend/Magento/newizze/web/images/'));
    });

    Читать дальше →
  • AI на службе GDPR

    Наверное, все знают, что в Европейском Союзе с 25 мая 2018 года действует регламент ЕС 2016/679 General Data Protection Regulation (GDPR), принятый от 27 апреля 2016 года. C помощью GDPR усилена и приведена к единому образу защита персональных данных всех лиц во всех странах, входящих в Европейский Союз.


    Исследователи из юридического факультета Института Европейского университета во Флоренции (EUI), в сотрудничестве с инженерами из Университета Болоньи, Университета Модены и Реджо-нель-Эмилия, при поддержке Европейской группы потребителей BEUC разработали систему искусственного интеллекта «Claudette meets GDPR», которая в идеале представляет собой поисковую систему систему для ежедневного мониторинга соответствия политик конфиденциальности IT-продуктов требованиям законодательства. Но пока Claudette находится на стадии бета-тестирования и обучения алгоритмов.


    Вот именно с соответствия документации IT-продуктов и GDPR — решили начать тестирование Claudette.

    Читать дальше →
  • Интернационализация (локализация) в XCode (iOS/macOS)

    Вступление


    При поиске в google по запросам Core Data или Autolayout, первый результат поиска содержит обновляемую информацию в «новом формате документации». Потратив определенный объем времени, читая и следуя инструкциям, достаточно не сложно ознакомиться с основными инструментами предоставляемыми той или иной технологией(особенно если чтение на английским не является для вас серьезным препятствием).

    Аналогичную информацию можно найти и по локализации продукта. Но в отличии от примеров указанных выше она:

    • Имеет старый менее удобный, как по мне, формат для чтения.
    • Она даже не будет первой в выдаче по запросу «site:developer.apple.com internationalization»
    • И что самое, интересное имеет в заголовке очень любопытное замечание: «Important: This document is no longer being updated. For the latest information about Apple SDKs, visit the documentation website.»

    A первой в выдаче мы видим страницу, которая в большей мере выглядит, как инструмент продажи локализации разработчикам и менеджерам, когда основной интерес представляют разрозненные ссылки в разделах WWDC Session Videos и Documentation and Sample Code.
    Читать дальше →
  • Куда движется SEO в наше время

    Поисковая оптимизация сайтов довольно популярная тема, которая интересует широкий круг людей, что в наше время не удивительно. Я попробую доступным и понятным языком, донести свое виденье о SEO. Расскажу, что оно представляет в наше время и что ждет SEO в будущем. Надеюсь статья будет полезна для тех, кто только начинает знакомство с SEO и Digital в целом, так и для опытных специалистов.
    Читать дальше →
  • Анонимность и безопасность: начало пути к приватности. Урок первый, часть первая



    Пролог


    Рано или поздно, каждого начинает в некой степени волновать вопрос конфиденциальности информации, в любой её интерпретации. Задаваясь вопросом «как стать анонимным и как защитить свои данные», скорее всего, ответ будет следующим — «используйте VPN и Tor Browser» — Вы аноним.

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

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

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

    Для кого этот урок? — Для любого кто на него наткнется. Необходимы фундаментальные познания взаимодействия с устройствами (ПК, ноутбук, смартфон). Я взял в расчет факт отсутствия должных навыков в компьютерной технике, по этому, все действия будут описан так, что даже ребенок сможет их выполнить.
    Читать дальше →
  • Создание BMP файла на чистом Python3.6

    Для первой игры возникла необходимость генерировать графические файлы, но немного изучив вопрос выяснил, что популярные графические библиотеки PIL и pillow не обновляются и их не получается использовать с версиями python 3.7 или 3.6. В итоге я решил, что быстрее будет разобраться как сделать графический файл на чистом питоне, чем гуглить другие варианты. Я открыл Википедию и решил создать вариант файла Example 2 с альфа каналом:

    image

    Читать дальше →
  • Зарплаты и налоги: стоит ли IT-специалистам уезжать из России?

    Развитие и масштабность современных технологических проектов способствуют кадровой нужде в IT-специалистах. В большинстве своем это касается разработчиков в различных областях. Поэтапное освоение новых отраслей, промышленная роботизация, появление большого количества мобильных приложений для iOS и Android предопределили топовые позиции в рейтинге самых востребованных профессий.
    Читать дальше →
  • Два месяца учебы 4-го курса

    Добрый день, я студент технического колледжа 4го года (последнего) обучения.

    Я никогда не вернусь в этот колледж, говорил я себе на 2м курсе, но на третьем я понял что я вернусь туда и не раз, по крайней мере просто позабавится. В этой статье я расскажу немного о своём дипломном проекте и о трудностях учебы что привели к созданию ещё нескольких проектов, так же тут будет немного историй из жизни 4го курса.

    Подробнее под кат.
    Читать дальше →
  • Включаем GPU acceleration у Photoshop под Wine

    Спешу поделиться радостью: вот и настали те времена, когда можно полностью отказаться от win в пользу linux. Последней преградой был Photoshop — единственная софтина, без которой некоторым девелоперам, например, фронтэнд-девелоперам, верстальщикам (и прочим стропальщикам), приходилось туговато. Photoshop-то уже издавна запустили под wine, но оставалась одна проблемка: у меня никак не хотела включаться аппаратная поддержка GPU. А без нее и тормоза дикие на серьезных макетах, и отсутствие многих плюшек (фильтры, трансформации и прочая магия). После долгих неудачных экспериментов, наконец, удалось заставить Photoshop увидеть GPU и работать с ним «на полную катушку».
    Читать дальше →
  • Бережливое отношение к себе

    image
    Photo by Kobu Agency on Unsplash


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


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


    И на самом деле ответ на вопрос прост, вы либо делаете что-то одно, уделяя этому много времени, либо делаете много разных дел, но затрачивая на них мало времени, другого пути не существует.

    Читать дальше →