• Почему разработчики под OS X не востребованы?

    dummyman
    @dummyman
    диссидент-схизматик
    Дело не то чтобы в количестве маков. Все дело в том, что маки теряют свою уникальность. Стив Джобс мертв. Cocoa уходит в прошлое. На смену маковскому приходят универсальные unity, qt, gtk и проч... Кому надо разрабатывать приложения под мак - будут искать именно таких разработчиков.

    Вас же не удивляет что почти нет вакансий по разработке софта под, например, солярис. Да и вообще мало кто с ним сталкивался. При этом, на нем можно запустить 99% софта, который разрабатывался для линукса.
    Ответ написан
    9 комментариев
  • Создать объект на основе массива?

    dummyman
    @dummyman
    диссидент-схизматик
    Конечно, можно написать оптимальнее.
    Есть одно негласное правило JS:
    Определяй структуру объекта в конструкторе и никогда не меняй после!

    Еще хуже добавлять объекту свойства в цикле.

    Так будет точно правильнее
    function AObj(arr){
        arr.forEach( v => Object.assign(this, { [v]: objVal } ) );
    }
    var aObj = new AObj([1,2,3]);
    Ответ написан
    7 комментариев
  • Как защищать сервер от вредоносных файлов?

    dummyman
    @dummyman
    диссидент-схизматик
    Если сервер на linux или bsd то проверять mime-тип:
    file -b --mime-type путь_до_файла
    или
    xdg-mime query filetype путь_до_файла
    Ну а если на винде - любой антивирус решит проблему
    Ответ написан
  • Как вы работате с гитом?

    dummyman
    @dummyman
    диссидент-схизматик
    Отвечу коротко. Делайте коммит когда все тесты проходят со статусом success.
    Ответ написан
    Комментировать
  • Как научиться писать приложения на pure JS?

    dummyman
    @dummyman
    диссидент-схизматик
    Поддерживаю вас. В современных браузерах и других интерпретаторах js есть все необходимые средства для программирования без всяких там "jQuery и ко".

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


    Не важно сколько функций вы напишете. Разумеется, обычно чем код короче, тем лучше. - имеются в виду не количество символов кода, а точность выражения идеи в реализации, и ничего лишнего.

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


    На самом деле, мета-программирование на javascript - это не всегда положительная сторона. Есть тысяча и один фреймворк, которые могут послужить хорошим примером, как делать не надо!
    Вспомним хотябы GWT, YUI. Потом ExtJS4 - полная срака из кастомной структуры классов с наследованием двадцатого уровня. Для реализации того функционала можно было выкинуть 3/4 кода. Может быть, во времена популярности prototype.js+script.aculo.us, ExtJS 2 был "хорошим инженерным решением", но в 4й версии - с абстракциями явный перебор.

    На русском языке обязательно прочтите Гарден.
    Хорошую книгу написал Джон Резик. Есть русская версия, правда только первое издание.
    a4ab075560824f9e8283565363a7561f.jpg
    Поверьте, фреймворки - зло! Не пишите лишнего кода сверх решения задачи. Компенсируйте максимум структуры приложения в html и css.
    Ответ написан
    5 комментариев
  • Какие есть похожие на jsx решения написания HTML в JS?

    dummyman
    @dummyman
    диссидент-схизматик
    Никогда не понимал за что можно любить jsx...
    pug вам не подходит?
    На мой взгляд лучший шаблонизатор.
    Ответ написан
    3 комментария
  • Чем запарсить сотню страниц?

    dummyman
    @dummyman
    диссидент-схизматик
    Уже писал где-то

    Тут может помочь каспер
    docs.casperjs.org/en/latest/quickstart.html#now-le...

    var links = [];
    var casper = require('casper').create();
    
    function getLinks() {
        var links = document.querySelectorAll('h3.r a');
        return Array.prototype.map.call(links, function(e) {
            return e.getAttribute('href');
        });
    }
    
    casper.start('http://google.fr/', function() {
       // Wait for the page to be loaded
       this.waitForSelector('form[action="/search"]');
    });
    
    casper.then(function() {
       // search for 'casperjs' from google form
       this.fill('form[action="/search"]', { q: 'casperjs' }, true);
    });
    
    casper.then(function() {
        // aggregate results for the 'casperjs' search
        links = this.evaluate(getLinks);
        // now search for 'phantomjs' by filling the form again
        this.fill('form[action="/search"]', { q: 'phantomjs' }, true);
    });
    
    casper.then(function() {
        // aggregate results for the 'phantomjs' search
        links = links.concat(this.evaluate(getLinks));
    });
    
    casper.run(function() {
        // echo results in some pretty fashion
        this.echo(links.length + ' links found:');
        this.echo(' - ' + links.join('\n - ')).exit();
    });


    Запускаем
    $ casperjs googlelinks.js

    Получаем
    20 links found:
     - https://github.com/casperjs/casperjs
     - https://github.com/casperjs/casperjs/issues/2
     - https://github.com/casperjs/casperjs/tree/master/samples
     - https://github.com/casperjs/casperjs/commits/master/
     - http://www.facebook.com/people/Casper-Js/100000337260665
     - http://www.facebook.com/public/Casper-Js
     - http://hashtags.org/tag/CasperJS/
     - http://www.zerotohundred.com/newforums/members/casper-js.html
     - http://www.yellowpages.com/casper-wy/j-s-enterprises
     - http://local.trib.com/casper+wy/j+s+chinese+restaurant.zq.html
     - http://www.phantomjs.org/
     - http://code.google.com/p/phantomjs/
     - http://code.google.com/p/phantomjs/wiki/QuickStart
     - http://svay.com/blog/index/post/2011/08/31/Paris-JS-10-%3A-Introduction-%C3%A0-PhantomJS
     - https://github.com/ariya/phantomjs
     - http://dailyjs.com/2011/01/28/phantoms/
     - http://css.dzone.com/articles/phantom-js-alternative
     - http://pilvee.com/blog/tag/phantom-js/
     - http://ariya.blogspot.com/2011/01/phantomjs-minimalistic-headless-webkit.html
     - http://www.readwriteweb.com/hack/2011/03/phantomjs-the-power-of-webkit.php
    Ответ написан
  • Книги по программированию в Linux?

    dummyman
    @dummyman
    диссидент-схизматик
    Комментировать
  • Как сделать интерактивную карту?

    dummyman
    @dummyman
    диссидент-схизматик
    Есть такой фреймворк openlayers
    Вот ссылка на пример openlayers.org/en/latest/examples/select-features.html
    там разделение по государствам, нужно будет вместо https://openlayers.org/.../geojson/countries.geojson составить свой файл geojson по областям
    Данные берем отсюда gis-lab.info/qa/osm-adm.html
    Стили карт берем тут https://www.mapbox.com/maps/
    15-30 минут на все и карта готова.
    Ответ написан
    2 комментария
  • Как изменить директорию express.static после обнаружения токена?

    dummyman
    @dummyman
    диссидент-схизматик
    Вероятнее всего, вы имеете middleware для ответа 404 и он срабатывает по цепочке перед вторым express.static.
    Причем, смотрите, файлы будут доступны для всех независимо, авторизован пользователь или нет. И если файл с одним названием существует и в /public и в /private, то всегда будет отдаваться тот, который подключен app.use() ранее.

    Использование двух express.static - плохая практика, ищите другие пути решения задачи =)
    Ответ написан
    Комментировать
  • Как (с помощью чего) лучше организовать анализ текста?

    dummyman
    @dummyman
    диссидент-схизматик
    нужно копать в сторону sphinx.
    Нейросети скорее всего не помогут либо помогут при гораздо более высоких усилиях и ресурсах.
    Сфинкс - некое подобие Яндекс/гугл. Сначала индексирует материал, потом по поисковой фразе выдаст результаты отсортированные по релевантности.
    Ответ написан
    Комментировать
  • Как скрыть часть текста?

    dummyman
    @dummyman
    диссидент-схизматик
    " Сосна+Бук + 33 110 руб.".trim().replace(/^(\S+).*$/, '$1');


    Array.from(document.querySelectorAll("span"))
        .forEach(span => span.innerHTML = 
             span.innerHTML.trim().replace(/^(\S+).*$/, '$1')
    );
    Ответ написан
    Комментировать
  • Как делать бота для посещения сайта 1 раз минуту?

    dummyman
    @dummyman
    диссидент-схизматик
    Тут может помочь каспер
    docs.casperjs.org/en/latest/quickstart.html#now-le...

    var links = [];
    var casper = require('casper').create();
    
    function getLinks() {
        var links = document.querySelectorAll('h3.r a');
        return Array.prototype.map.call(links, function(e) {
            return e.getAttribute('href');
        });
    }
    
    casper.start('http://google.fr/', function() {
       // Wait for the page to be loaded
       this.waitForSelector('form[action="/search"]');
    });
    
    casper.then(function() {
       // search for 'casperjs' from google form
       this.fill('form[action="/search"]', { q: 'casperjs' }, true);
    });
    
    casper.then(function() {
        // aggregate results for the 'casperjs' search
        links = this.evaluate(getLinks);
        // now search for 'phantomjs' by filling the form again
        this.fill('form[action="/search"]', { q: 'phantomjs' }, true);
    });
    
    casper.then(function() {
        // aggregate results for the 'phantomjs' search
        links = links.concat(this.evaluate(getLinks));
    });
    
    casper.run(function() {
        // echo results in some pretty fashion
        this.echo(links.length + ' links found:');
        this.echo(' - ' + links.join('\n - ')).exit();
    });


    Запускаем
    $ casperjs googlelinks.js

    Получаем
    20 links found:
     - https://github.com/casperjs/casperjs
     - https://github.com/casperjs/casperjs/issues/2
     - https://github.com/casperjs/casperjs/tree/master/samples
     - https://github.com/casperjs/casperjs/commits/master/
     - http://www.facebook.com/people/Casper-Js/100000337260665
     - http://www.facebook.com/public/Casper-Js
     - http://hashtags.org/tag/CasperJS/
     - http://www.zerotohundred.com/newforums/members/casper-js.html
     - http://www.yellowpages.com/casper-wy/j-s-enterprises
     - http://local.trib.com/casper+wy/j+s+chinese+restaurant.zq.html
     - http://www.phantomjs.org/
     - http://code.google.com/p/phantomjs/
     - http://code.google.com/p/phantomjs/wiki/QuickStart
     - http://svay.com/blog/index/post/2011/08/31/Paris-JS-10-%3A-Introduction-%C3%A0-PhantomJS
     - https://github.com/ariya/phantomjs
     - http://dailyjs.com/2011/01/28/phantoms/
     - http://css.dzone.com/articles/phantom-js-alternative
     - http://pilvee.com/blog/tag/phantom-js/
     - http://ariya.blogspot.com/2011/01/phantomjs-minimalistic-headless-webkit.html
     - http://www.readwriteweb.com/hack/2011/03/phantomjs-the-power-of-webkit.php
    Ответ написан
    Комментировать
  • Какая система мониторинга имеет PUSH агенты?

    dummyman
    @dummyman
    диссидент-схизматик
    Когда нет возможности централизованного сбора/хранения данных, еще и субъекты системы поочередно могут уходить в оффлайн, может помочь решения на основе blockchain.
    Есть даже готовые: https://www.bitmessage.org/wiki/Main_Page
    Через CLI-интерфейс того мессенжера можно гонять любые сериализованные данные между компами, без сервера и без их одновременной работы.
    Ответ написан
    Комментировать
  • Как делают защиту на сайте на PHP?

    dummyman
    @dummyman
    диссидент-схизматик
    От DDOS защититься можно неиспользованием PHP во фронтальной инстанции. Если один сервер - полное кэширование результатов в оперативной памяти.
    От XSS и SQL-инъекций (кстати, по сути одно и то же, второе без первого врятли возможно) поможет защититься грамотное распределение прав на сервере. - Если интересно, могу дать консультацию. Но, скорее всего вы так не сделаете! В 95% случаев, сколько сайтов я настраивал на дедиках/vps, web-мастеры возвращают свои разрешающие все и везде права. Им, видете ли, неудобно устанавливать жумловские/вордпресовские плагины прям из админки.
    Если же разрешить изменения всех файлов только пользователем ftp (то есть, запретить это делать вебсерверу), и разрешить делать только заранее заданные выборки из БД, то можно не бояться за безопасность по этим вопросам. Даже если у злоумышленника что и получится подобрать, все равно сделать он ничего не сможет. - Ни тебе шелл залить, ни базу пользователей угнать.
    Но современные движки сделаны для очень ленивых пользователей, они сами формируют структуру своих файлов. Тебе надо то лишь просто залить версию дистра в корень сайта - остальное сделают скрипты, они же оставят себе права на изменеия файловой структуры для дальнейшего удобного использования. Ставишь плагины от третьих разработчиков - они тоже хотят постоянно что-то записывать в файловую структуру, их разработчики вообще не предусматривают варианты работы, когда на изменение ФС нет доступа, хорошо если выводят сообщение о том, чтобы web-мастер выдал разрешение...
    Я не могу назвать этот факт никаким другим определением как долбо..бизм.
    Ответ написан
  • Минимальное железо для RDP?

    dummyman
    @dummyman
    диссидент-схизматик
    ?u=http%3A%2F%2Fassets2.ignimgs.com%2F20
    (Эх, в первый раз получилось недостаточно качественное фото)
    Только одного гигабита мало, если одновременно включить несколько клиентов.
    Сами посудите. если брать 32 бит, каждый пиксель занимет 4 байта:
    1920*1080=2073600 x 4 ≃ 8Мбайт/кадр
    8Мбайт х 25fps = 200Мбайт/сек
    Ответ написан
    6 комментариев
  • Подключать несколько JS на странице или пихать все в один файл?

    dummyman
    @dummyman
    диссидент-схизматик
    В случае с монолитными приложениями, объединять js в один файл имеет смысл хотя бы даже для удобства отладки, сизнонизации между разными cdn.

    Бывают ситуации, когда, например, на одной из страниц сайта есть чатик. Разумеется, загружать код такого чатика на всех страницах сайта глупо. Не только из-за трафика, еще в целях минимизаций затрат ресурсов web-клиента.
    Ответ написан
    Комментировать
  • Как разместить параграф под заголовком?

    dummyman
    @dummyman
    диссидент-схизматик
    У текста под заголовком
    display:block; 
    clear:both;
    Ответ написан
    Комментировать
  • Как возвращать (добавить) в контейнер (div) код, помимо других результатов?

    dummyman
    @dummyman
    диссидент-схизматик
    <li code="код" caption="то, что отображается">Техт</li>

    вместо select_this(val):
    $('ul li').click(() => {
       var code=$(this).attr('code');
       var caption=$(this).attr('caption');
       //...
    })


    У формы используйте событие submit() вместо keyup() у inputa
    $("#autocomplete_search_box").keyup()

    Надеюсь, информация поможет.
    Ответ написан
  • Фотоальбом онлайн с шаблонами?

    dummyman
    @dummyman
    диссидент-схизматик
    По дизайну посоветовать толкового не могу.
    Но движок опенсурсный для галлер есть тут: galleryproject.org
    Вроде локализован.
    Полностью рабочий, останется только свою CSS накатить.
    Ответ написан
    1 комментарий