• Хочу написать свою хостинг панель, поможете?

    dummyman
    @dummyman
    диссидент-схизматик
    Ну есть же готовый ISPConfig.
    Беглым поиском по github можно найти скрипты автоинсталлеров. Крайне гибко настраивается путем выключения ненужных модулей. Хотите изобретать велосипед - дело ваше! Но для реализации задачи у вас будет уходить много сил и времени, которое вы бы могли потратить, например, на программирование тех же сайтиков по заказам, или же могли бы просто больше отдыхать. Врядли работодатель будет рад оплачивать усилия связанные изобретением велосипеда.
    Ответ написан
    Комментировать
  • Что делать когда коллеги уровнем ниже?

    dummyman
    @dummyman
    диссидент-схизматик
    Конретно перечисленные вами проблемы можно решить наняв на работу или обозначив из нынешних работников project leaderа. Этот сотрудник должен быть в курсе всех тонкостей проекта на всех его уровнях и может назначить задание наиболее компетентному в сфере разработчику или ответить на все вопросы по заданию разработчику, у которого не достаточно компетентности, при этом других разработчиков тупо не оказалось под рукой.

    Причем, одно из главных свойств project leaderа - способность принимать дальновидные решения по спорным вопросам. Для этого, необходим его объективный взлгляд на проект. Соответственно, для сохранения объективности взгляда project leaderу запрещается коммитить собственный код в проект. Ведь, ни для кого не секрет, любой человек/программист/разработчик будет считать свой код главнее, чем код других коллег, - что несомненно утрачивает объективность в принятии решений в спорных ситуациях. То есть, project leader должен быть, как судья в суде, слепым к неотносящимся к делу факторам, и его решения не должны быть навязаны заинтересованными в личной выгоде исполнителями.
    Ответ написан
    Комментировать
  • MySQL грузит все ядра проца. Глюк?

    dummyman
    @dummyman
    диссидент-схизматик
    Похоже, отлаживать ситуацию придется на уровне модификации запросов из приложения. Как уже упоминалось выше, на момент отладки следует включать и анализировать лог медленных запросов. Где-то дописать индексы, где-то заменить чтение из обычной таблицы на чтение из временной таблицы. Тут же, самим SQL регламентирован инструмент всех времен и народов - EXPLAIN.
    Отдельным моментом стоит обратить внимание на блокировки. Часто сталкивался с ситуацией, когда множество запросов на чтение не дают выполняться запросам на запись (или наоборот перегруз запросов на запись блокируют чтение), чем под нагрузкой моментально переполняют очередь - и основное процессорное время расходуется управлением этой очередью. Конкретно из своего опыта (я работал чуть больше года техником в хостинг-конторе), чаще всего проблема проявлялась у сайтов на базе Wordpress. Причем, сам движок Wordpress оптимизирован достаточно хорошо. Проблема в бесконечном количестве плагинов от авторов средней руки. Особенно, плагины, связанные со сбором/подсчетом статистики. При генерации одной страницы используется десятки противоречащих друг-другу запросов на чтение и запись. Бывало, из-за блокировок два одновременно работающих (конкурирующих) инстанса php посылают к БД запросы блокирующие работу друг-друга с такой интенсивностью, что адекватная работа возможна только ограничением их количества одним лишь инстансом php. И никакой переезд на более мощный или облачный сервер не поможет. Логические ошибки решать наращиванием мощностей неэффективно и может быть очень дорого. - А потому любое наращивание мощностей железа - есть решение временное, и способно отсрочить работы по отладке максимум на несколько дней. В проектировании приложений (как web/rest, так и standalone) надо понимать что делает каждый action - либо он пишет в БД, либо читает из БД. Если каждый action будет требовать много чтений и записей в одних и тех же таблицах, это обязательно приводит к проблемам блокировок.

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

    И еще мысль ради пищи для размышлений - во большинстве ситуаций таблицы MyISAM работают в разы быстрее InnoDB.
    Ответ написан
    5 комментариев
  • Нормальный сплэшскрин (лого) в Линукс, реально ли достичь?

    dummyman
    @dummyman
    диссидент-схизматик
    Plymouth - дефакто стандарт для анимации загрузки модулей и сервисов после загрузки ядра. Команда freedesktop пока не изъявляли желаний заменить его на более подходящее. Также на плечи plymouth вешается задача визуализации запроса ввода пароля для активации ключа lvm для монтирования зашифрованных разделов.
    Также, для отображения логотипов до загурзки ядра, можно кастомизировать шкурку GRUB.
    Ну а после запуска X за сплеш может отвечать шкурка одного из так называемыхDisplay Managerов. Например, LightDM, GDM, SDDM.
    Ищите работы авторов форков линуксов. Примерами работ заполнен весь github. Поиск по github к вашим услугам.
    https://github.com/pld-linux/plymouth
    https://github.com/skd1993/nsa-plymouth
    https://github.com/Jolicloud/plymouth
    https://github.com/RussianFedora/plymouth
    https://github.com/madeinnordeste/Banana-plymouth
    https://github.com/gooselinux/plymouth
    https://github.com/endlessm/plymouth
    https://github.com/aztli/Plymouth-aztli
    https://github.com/madeinnordeste/Banana-plymouth
    https://github.com/numixproject/numix-plymouth-theme
    https://github.com/jsayol/dark-mint-plymouth-theme
    https://github.com/Sabayon/genkernel-next
    https://github.com/Generator/Grub2-themes
    https://github.com/thias/glim
    https://github.com/Rohde-Schwarz-Cybersecurity/Tru...
    https://github.com/Se7endAY/grub2-theme-vimix
    Ответ написан
    Комментировать
  • Что делают асинхронные генераторы (async function*)?

    dummyman
    @dummyman
    диссидент-схизматик
    Хм. Странно, что вам ни разу сильно не понадобились обычные генераторы. Промисы, генераторы, async/await, co/thunkify - все они призваны распутывать лапшу из колбэков. Причем, решения могут выглядеть по-разному, но формально работает по одному и тому же алгоритму. Потому ваше утверждениие чрезчур категорично. То есть, например, использование async/await бабелью будет перекодировано в алгоритм схожий с принципами промисов. Но, бывают даже находятся люди, которые используя более высокоуровневые async/await, утверждают, что не пользуются ни промисами, ни генераторами. - И зачем их придумали вообще?!

    Теперь по вашему вопросу. А что вас удивляет в новых генераторах? Я бы назвал их не асинхронными, а генераторами генераторов! Так как простые генераторы тоже задуманы выполняться асинхронно. И использовано оно может быть в тех же ситуациях, просто смотря на уровень выше. Ну и for await, соответственно, туда же. - Может быть использован, например, когда вам нужно прочитать все файлы в папке рекурсивно.
    Ответ написан
    4 комментария
  • Есть ли в node.js многопоточность?

    dummyman
    @dummyman
    диссидент-схизматик
    stream - это поток данных,
    tread - это поток управляющих конструкций (операторов).
    Читай почти одно и тоже. Разница межу ними:
    stream - информация, tread - подрограмма (алгоритм).
    К сожалению, v8 может работать только в один поток.
    Если необходимо увеличить производительность на многопроцессорных станциях, можно запускать алгоритм в несколько процессов, при этом каждый процесс будет жрать свою отдельную память и отсутствует какая-либо возможность задать/использовать общие блоки памяти. При этом, все фичи доступны в сявых апи ноды - вы можете спрограммировать критичный к системе код отдельно на сях, вкомпилировать модуль в ноду и использовать его из яваскрипта.
    Ответ написан
  • Как сделать выборку?

    dummyman
    @dummyman
    диссидент-схизматик
    Если речь идет о сферических координатах (не на плоскости), одновременно самым простым и лучшим по производительности решением на сегодняшний момент - использование postgis. А там уже ищите как настраивать ваш фреймворк под хранение данных в существующих моделях и таблицах postgres.
    Ответ написан
    Комментировать
  • Как работает сортировка пузырьком?

    dummyman
    @dummyman
    диссидент-схизматик
    Пощупать разницу можно на демке:
    math.hws.edu/eck/jsdemo/sortlab.html

    Гдето была ссылка на тоже самое, только в 100х больше данных, и там загружал процессор на максимум возможностей, чтобы оценить какая сортировка в каком браузере быстрее. Не могу найти. Найду - прикручу сюда!
    Ответ написан
    Комментировать
  • Как "совместить" работу selenium webdriver и pyTest, чтобы написать автотест для каких-то действий на сайте?

    dummyman
    @dummyman
    диссидент-схизматик
    Не работал с селениумом, но много работал с каспером.
    Должно быть, принципы работы одинаковы.
    Как делаю в каспере?
    Возьмем базовый пример.

    var casper = require('casper').create();
    var links;
    
    function getLinks() {
    // Scrape the links from top-right nav of the website
        var links = document.querySelectorAll('ul.navigation li a');
        return Array.prototype.map.call(links, function (e) {
            return e.getAttribute('href')
        });
    }
    
    // Opens casperjs homepage
    casper.start('http://casperjs.org/');
    
    casper.then(function () {
        links = this.evaluate(getLinks);
    });
    
    casper.run(function () {
        for(var i in links) {
            console.log(links[i]);
        }
        casper.done();
    });


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

    Сразу весь скрипт посылать не стоит. Первой пачкой отправим
    var casper = require('casper').create();
    var links;
    
    function getLinks() {
    // Scrape the links from top-right nav of the website
        var links = document.querySelectorAll('ul.navigation li a');
        return Array.prototype.map.call(links, function (e) {
            return e.getAttribute('href')
        });
    }
    
    // Opens casperjs homepage
    casper.start('http://casperjs.org/');

    Через, например, секунду выполним
    casper.then(function () {
        links = this.evaluate(getLinks);
    });

    Через еще секунду проверим результат
    casper.run(function () {
        for(var i in links) {
            console.log(links[i]);
        }
    });


    Потом еще раз выполним:
    casper.thenOpen('http://phantomjs.org', function() {
        this.echo(this.getTitle());
    });
    
    casper.then(function () {
        links = this.evaluate(getLinks);
    });


    И еще раз проверим результат:
    casper.run(function () {
        for(var i in links) {
            console.log(links[i]);
        }
    });


    И в конце завершим работу каспера:
    casper.exit();

    В каспере также есть собственная система модульного тестирования.

    Не уверен, что с селениумом будет сложнее/проще, принципы везде одинаковы.
    См. документацию
    Ответ написан
    Комментировать
  • Как разрешить вводить только указанные числа?

    dummyman
    @dummyman
    диссидент-схизматик
    Если нужны только разряды, зачем что-то вводить? Пусть и вводят вместо чисел разряд 3,2,1,0,-1,-2,-3 - не ошибутся!
    Ответ написан
  • Как правильно настроить пути к файлам в nodejs backend?

    dummyman
    @dummyman
    диссидент-схизматик
    Сразу видно, в своей разработке вы не пользуетесь тестами.
    Прописывать конфиги в исходниках неправильно. Изучайте TDD.
    Environment из системы читается автоматически в объект process.env.
    Для всего остального есть некие машины состояния.
    Как они работают хорошо на пальцах разжеванно в видосике.
    Ответ написан
    Комментировать
  • Сколько Nodejs сервер должен есть памяти сервера?

    dummyman
    @dummyman
    диссидент-схизматик
    У меня на сервере стоит MySQL база данных, на ней висят 2 сайта с маленькой посещалкой (500-700 человек в сутки), так вот эта база съедает 500-600 мб памяти сервера и как мне объяснили, это слишком много и мне необходимо базу оптимизировать.

    Небось сайты Wordpress. Отключайте плагины, господа. И да прибудит вам производительность БД.
    Но вот я поднял Nodejs сервер с самым стандартным api c CRUD на борту. Посмотрел сколько съедается памяти и обомлел, больше 1000 мб занимает Nodejs сервер, которые в данный момент даже запросы не обрабатывает, он просто запущен для личного использования.

    Ищите утечки. Когда сервер запускается, сколько он весит? Каждый запрос увеличивает аппетиты? - Вы что-то сделали не правильно!
    Ответ написан
    4 комментария
  • Рисование графиков, есть ли интересная статья или пример?

    dummyman
    @dummyman
    диссидент-схизматик
    Из jquerийных простенький morris и посложнее flot.
    Для Анжелы n3. Для любителей Ember Charts.
    Простенькие ChartJS и uvCharts.
    Очень легкий и хорошо разжеванный ChartList.
    Не менее хорошо разжеванный, но платный, ZingChart.
    Поддержку legacy обеспечит FusionCharts - обещают работу на IE6.
    Профессионалам понравится список фичей plotly.
    Вы бы конкретнее указывали какие графики вам нужны. А то все не подходят, а что нужно - секрет. Хотите создавать свою систему - читайте исходники существующих. - Врятли любая статья будет лучше и более полной чем исходники рабочих библиотек.
    Ответ написан
    5 комментариев
  • Стоит ли покупать mac mini для веб разработки?

    dummyman
    @dummyman
    диссидент-схизматик
    Я бывалый маковод. Лично я в конце апреля взял себе нюк. Да, я оборудовался на максимум своих возможностей, 32Гб ОЗУ (две плашки HyperX) и 2Тб HDD (две плашки intel600p).
    3abb6dc09bba4361b91f47d0e6610348.jpg
    Да, эта штука шумит под нагрузкой. Да, она не того гламурного белого цвета. Но за потраченные средства я бы купил себе миник вдвое хуже по всем показателям. Кому-то "понт дороже денег". Кто-то выскажет, "Стив Alive"! А может у вас тоже есть лишние деньги? А я вот нищеброд.
    Ответ написан
    5 комментариев
  • Как настроить локаль в Си?

    dummyman
    @dummyman
    диссидент-схизматик
    У меня стоит "ru_RU.utf8"
    Ответ написан
  • Как организовать переход между страницами с таким эффектом?

    dummyman
    @dummyman
    диссидент-схизматик
    Ваш пример принципиально ничем не отличается от getbootstrap.com/javascript/#carousel
    Ищите простые вещи в любых сколько либо сложных вещах. А на простые скрипты еще проще вешать функционал.
    Ответ написан
  • Какие есть сайты для самостоятельного изучения схемотехники на русском и английском языках?

    dummyman
    @dummyman
    диссидент-схизматик
    В таких вещах опыт даст большее представление чем визуальный контакт.
    "Лучше один раз сделать чем 100 раз увидеть".
    Поэтому берем небольшую сумму денег и дуем на амперку за "матрёшкой", или может сейчас в тренде что-нибудь более продвинутое, чем матрёна. Еще имел опыт работы с вот этим магазином. И да простят меня админы тостера за рекламу.
    Ответил на ваш прошлый вопрос здесь.
    Ответ написан
    Комментировать
  • Как сделать при активной строке поиска кнопку активной?

    dummyman
    @dummyman
    диссидент-схизматик
    У вас там похоже нестандартный обработчик на кнопке submit. И похоже он читает состояние inputа, но когда форма пытается засабмититься, сначала пропадает фокус с инпута, тем самым обработчик думает что форма закрыта. Хотя может я ошибаюсь, я бы так не далал.

    Во-первых свистоперделку можно сделать средствами html+css.
    Во-вторых, перегружать кнопку сабмита - плохая практика. Обычно перегружают сам сабмит у формы.
    Ну и втретьих... Господи, что это?! Что вы курите? Вы пробовали как все это работает на мобильных?
    Ответ написан
  • Как запустить несколько openvpn на одном компьютере?

    dummyman
    @dummyman
    диссидент-схизматик
    Вам нужны не OpenVPN, вам нужны прокси
    Установите proxychains-ng. Ищите в репозиториях.
    Запускать можно любой софт. Запуская программу через proxychains, весь трафик программы будет идти по заданному маршруту. Есть возможность использовать цепочки анонимизации состоящие из нескольких проксей, тор, vpn и проч.
    Ответ написан
  • Какая причина идиотизма со шрифтом?

    dummyman
    @dummyman
    диссидент-схизматик
    * {
        text-rendering: geometricprecision;
    }
    Ответ написан
    Комментировать