• Где внедрять зависимости?

    riky
    @riky
    Laravel
    пара вопросов на засыпку.
    - кто уполномочен создавать роутер, сейчас он без параметров но потом может быть нужны будут параметры. например роутеру понадобится доступ к базе или банальный путь к файлу с роутами где они прописаны.

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

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

    очень рекомендую также использовать DI контейнер например из симфони
    symfony.com/doc/current/components/dependency_inje...

    тоже его в какой то момент начал использовать когда еще болел темой "я пишу свой фреймворк".
    очень сложная это задача для новичка - сделать правильную архитектуру, хотя для самообучения это супер.
    Ответ написан
    Комментировать
  • Что нужно для хорошей соц. сети?

    riky
    @riky
    Laravel
    Новая соц сеть никому не нужна, но для учебных целей, задача вполне интересная.

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

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

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

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

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

    особо не рассчитывайте что это дойдет до прода (либо делать чтото попроще где мало сервисов, типа твиттера), здесь главное научится принципам, дальше начнется одна рутина.

    ну и отдельное внимание уделить фронтенду, лучше делать сразу так же single page app, на reactjs

    Успехов!
    Ответ написан
    Комментировать
  • Функция похожая на array_shift, только по ключу (изъять элемент массива) - БРЕД?

    riky
    @riky
    Laravel
    достать все не нужное можно и фильтром array_filter

    php.net/manual/ru/function.array-filter.php
    Ответ написан
    Комментировать
  • Как реализовать язык который будет компилироваться в другой язык программирования?

    riky
    @riky
    Laravel
    не давно как раз подобным занимался. нужно было сделать компилятор из чего то похожего на excel в php.

    основные шаги для этого
    1) токенизация, модуль лексер проходит посимвольно код и разбивает исходный код, на вашем новом языке на токены, числа, ключевые слова, скобки и тд, то есть каждый токен - некая последовательность символов пример ("var", "name", "=", "vasya", ";", "print", "(", "name", ")", ";").
    2) далее парсер проходит по токенам и определяет их тип, при этом как правило строится AST (abstract syntax tree). это набор объектов в которых исходный код представлен в виде объектов и операций над ними.
    в этом виде код уже можно выполнять, не генерируя код на целевом языке.
    3) компиляция. на основе AST генерируется код на другом языке.

    основные ключевые слова можно посмотреть здесь https://en.wikipedia.org/wiki/Lexical_analysis

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

    https://github.com/symfony/expression-language (парсит выражения и может вычислять их на основе AST то есть без генерации php кода, хотя может и его генерить)
    https://github.com/twigphp/Twig (парсит шаблоны и генерит php код)
    код очень похож, тк создатель у них один.

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

    примеры кода модулей из symfony expression language
    1) токенизация
    https://github.com/symfony/expression-language/blo...

    2) парсер
    https://github.com/symfony/expression-language/blo...
    создаются вот такие сущности https://github.com/symfony/expression-language/tre...
    то есть нода - функция, константа, массив, название переменной и тд.

    3) компилятор
    https://github.com/symfony/expression-language/blo...
    но большая часть генерации кода происходит в самих нодах. пример - https://github.com/symfony/expression-language/blo...
    Ответ написан
    Комментировать
  • Как поменять раскладку символов?

    riky
    @riky
    Laravel
    помоему лучше простой strtr использовать (и в $pattern можно все слеши убрать )

    $result = strtr($string, [
        'а' => 'a', 
        'б' => 'b', 
        'в' => 'v', 
        'г' => 'g', 
        // ...
    ])


    вот пример перевод в транслит https://gist.github.com/rik43/2eb7de83a59cc38d59e7
    Ответ написан
    Комментировать
  • Можно ли использовать Nw.js как обучение node.js?

    riky
    @riky
    Laravel
    лучше electron.atom.io пробуйте. NW это больше браузер.
    по своему опыту скажу что с ним вы наверное только основы node освоите, может быть с модулями познакомитесь. когда делаете сервис на ноде то там больше работы с обработкой запросов, а NW это по сути тот же javascript - фронтенд, если с js дружите - нового мало.

    вообще для обучения не рекомендую, лучше наоборот сначала на node работать. Nw.js есть смысл изучать только если вам нужны именно дестопные приложения, а серверные технологии не так интересны.
    Ответ написан
    4 комментария
  • Как использовать клавиатуру для выдачи гугл?

    riky
    @riky
    Laravel
    после ввода запроса tab
    потом кнопки - стрелки - вверх/вниз
    Ответ написан
    2 комментария
  • Программы анализа использования клавиатуры и мыши с графиками?

    riky
    @riky
    Laravel
    В шторме кстати есть метрика
    Help -> Productivity Guide
    показывает какие фичи для ускорения работы вы используете, а какие еще нет. как раз чтобы не использвоать мышь
    Ответ написан
    Комментировать
  • Какие вы знаете книги и ресурсы для изучения принципов проектирования микросхем для микроконтроллеров?

    riky
    @riky
    Laravel
    жмешь на кнопку - пищит

    извиняюсь конечно, думаю и сами понимаете, но тут МК не нужен, пара проводков всего лишь и все последовательно соединить.

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

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

    с ардуиной начинать удобнее, отказаться от нее при необходимости можно легко, хотя смысла нет, стоит пару баксов (если брать mini or nano), и вся обвязка там есть, а попаять и так найдешь что, если затянет.
    Ответ написан
    6 комментариев
  • Как навести порядок в html и css коде?

    riky
    @riky
    Laravel
    если ты про форматирование - ctrl + alt + L в шторме (webstorm or phpstorm)
    Ответ написан
    8 комментариев
  • Как сделать двойной клик?

    riky
    @riky
    Laravel
    есть специальное событие так и называется
    https://api.jquery.com/dblclick/
    Ответ написан
    Комментировать
  • Как вы систематизируете полученные знания?

    riky
    @riky
    Laravel
    Тоже в последнее время озадачиваюсь вопросом построения своей личной базы знаний. Все что вы перечислили работает, правда есть нюансы

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

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

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

    для себя сейчас делаю личный сервис для организации своей БЗ.

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

    рекомендую разбивать инфу хотя бы по таким категориям
    - технологии которые вы изучаете /используете
    - инфу по каждому проекту
    Ответ написан
    1 комментарий
  • С чего начать учить JavaScript в контексте IoT, работы с данными и Node.js, а не фронтендов веб-приложений?

    riky
    @riky
    Laravel
    никаких принципиальных проблем у ноды с интернетом вещей нет.
    сам лично как то начинал делать библиотеку с сервером на ноде + ардуино. один постоянно открытый сокет и команды передаются парой байтов и получилось очень круто, мгновенная реакция на железке по командам с сервера и наоборот и минимальный трафик, в отличие от обычной схемы с отдельными http запросами на каждый чих.

    основное затрудненние было что в ноде нет типизации как таковой, а мне нужно было побитово работать, но все решаемо (DataBuffer). если вы хотите общаться джейсоном, то проблем вообще никаких.
    Ответ написан
    3 комментария
  • Как сформировать два массива из данных введенных в текстовое поле формы?

    riky
    @riky
    Laravel
    $lines = explode("\n", $_GET['body']);
    $a = $b = [];
    
    foreach($lines as $line) {
      list($firstName, $lastName) = explode(";", $line, 2);
      $a[] = $firstName;
      $b[] = $lastName;
    }

    либо можно str_getcsv php.net/manual/ru/function.str-getcsv.php, но там тоже не одно действие
    Ответ написан
    Комментировать
  • Как добиться эффекта изменения цвета одежды на фото (fabric.js)?

    riky
    @riky
    Laravel
    посмотрите в консоль - при смене цвета - грузятся все новые картинки в разных позах.
    то есть либо на сервере генерят разные картинки со всеми цветами,
    либо, что вероятнее, их просто в фотошопе перекрасили и все.

    в данном случае это точно НЕ делается на фронтенде
    Ответ написан
    3 комментария
  • Стоит ли писать WebView приложение?

    riky
    @riky
    Laravel
    Все таки от задач зависит и бюджета.
    естественно натив качественнее/быстрее/жрет меньше памяти и проца. Да и в WebView не все реализовать можно, это все таки бюджетный вариант, но в большинстве случае будет все равно лучше чем ничего.

    Если бы описал задачу то тебе бы конкретнее подсказали.
    Если яву учить нет желания, начни с WebView.
    Ответ написан
    Комментировать
  • Как wordpress узнает что передает функция, когда она без параметра?

    riky
    @riky
    Laravel
    про 3 записи знает эта часть кода
    $args = array( 'posts_per_page' => 3 );
    $lastposts = get_posts( $args );


    давненько уже смотрел, внутри вордпресса есть такое понятие как текущий пост.
    похоже setup_postdata($post);
    и меняет эту глобальную переменную на переданный пост
    the_title(); / the_content();
    просто выводят данные текущего
    Ответ написан
    Комментировать
  • Каким способом реализовать на канвасе "зум" например от года к конкретному дню недели?

    riky
    @riky
    Laravel
    помоему для такого лучше svg
    посмотри d3js - фреймворк довольно сложный но у них миллион примеров и готовых заготовок + доки, еще и с красивой анимацией сможешь сделать.
    Ответ написан
    1 комментарий
  • Какой фреймворк выбрать для интернет-магазина?

    riky
    @riky
    Laravel
    вы бы пояснили зачем вам ИМ с нуля, может CMS?
    какие условия отметают CMS?
    или для развлечения?
    Ответ написан
  • Какой электронный органайзер посоветуете?

    riky
    @riky
    Laravel
    Интересная тема, спасибо, за развернутый вопрос.

    Сам недавно задался вопросом поиска похожей штуки для работы и личной жизни. Думаю вряд ли такой комбайн можно найти. Для себя думаю сделать свое. Могое из описанного вами нравится, плюс у меня основная идея - задачи можно бесконечно разбивать на подзадачи. Плюс контесты как минимум "Работа" - рабочие проекты, "Дом" - задачи/дела по дому, "Развлечения" и тд... чтобы вернувшись домой и открыв тот же акк, рабочие проекты не мельтешили перед глазами.

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

    Есть также пара встречных вопросов.

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

    2) "Персональная БЗ". тоже такого не хватает, хотелось бы услышать ваши предложения, как вам видится удобнее и как это может интегрироваться с остальным. в каком виде сама база? просто текстовые документы в древовидной структуре?
    сейчас тоже использую частично evernout для захвата веб страниц, частично txt файлы в дропбоксе, частично закладки в хроме, благо их сделали наконец то с папками. Хочется в одном месте. В один Еверноут все как то не приживается, доки у меня в основном это снипеты кода, хочется маркдаун а не wysiwyg, еще есть конспекты книг, курсов, а их уже лучше в майндмап, плюс другие форматы. Пока не придумал как лучше, дропбокс только и выручает.

    3) "Интеграция с evernote «в один клик»" не совсем понял что имеется ввиду. просто ссылка на док в еверноут?
    в принципе у него есть апи через которое можно было бы заметки загружать и редактирвоать на сервисе сохраняя там.

    4) хорошая идея интеграции с почтой и впринципе не сложно, можно даже с автоуведомлениями отправителя о статусах задачи.

    5) планируете ли вы как то обучение? например нашли интересную книгу, курс, статью, сразу не некогда изучить и непонятно когда выйдет время для нее. было бы удобно сохранить куда то напоминание, чтобы в след раз вместо прокастинации заняться делом. То же самое с новыми идеями, записать чтобы обдумать детальнее потом. при этом одного списка мне кажется не достаточно, хочется разбивать по разным категориям. Но такие вещи должны быть периодически перед глазами появляться на фоне, как баннеры рекламные на сайтах.

    6) и не совсем понятна принципиальная разница между
    3. Персональная БЗ (либо удобная интеграция с evenote, см.ниже)
    4. Записная книжка
    5. Личные записи по типу дневника/стикеров google keep
    в чем по вашему мнению особенность каждого типа?

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

    PS как итог, тоже хочется для себя инструмент в котором на одной странице можно будет видеть все насущные дела, в первую очередь самое важное и с возможностью быстро найти подробную любую информацию при необходимости. Сервис не обязан хранить все данные в себе, главное чтобы в нем можно было сделать обзор всего, как стартовая точка для любого дела + состояние дел.
    Ответ написан
    1 комментарий