• Существуют ли операционные системы сделанные в России?

    nki
    @nki
    bezkart.ru готовая система лояльности
    МСВС - мобильная система вооруженных сил
    Ответ написан
    5 комментариев
  • Существуют ли операционные системы сделанные в России?

    Что бы создать ОС с нуля (не игрушечную), отвечающую современным реалиям, необходимо миллионы человеко-часов. Но это не означает, что можно посадить миллион программистов, и за час они напишут ОС.
    А если совсем параноить, то и интрументарий должен быть написан с нуля.

    Из реальных проектов можно отметить AltLinux, он вроде проходил какую-то сертификацию.
    Ответ написан
    5 комментариев
  • Как переслать 10ТБ в Китай?

    @Tabletko
    никого не трогаю, починяю примус
    По-моему, проще будет переслать пару жестких дисков почтой.
    Ответ написан
    8 комментариев
  • Аякс в аяксе в аяксе, какое решение выбрать?

    Никакой портянки не будет. Будет одна функция и один колбэк, отличаться будет только параметры current_step и token, или как там вы их назовете, по которым на бэкенде будет определяться, какую часть формы отдать.

    И это хорошая практика. Поддерживается также легко.

    P.S. Грузить форму сразу или нет, зависит от ее размера и сложности. Если форма большая и сложная, и состояние промежуточных этапов зависит от предыдущих, надо разбивать.
    Ответ написан
    4 комментария
  • Как сделать простую валидацию формы?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    2 комментария
  • PHP, или как не научиться неактуальному?

    CheshireCat
    @CheshireCat
    full-stack developer
    Человек задал достаточно конкретный вопрос, а вы демагогию развели (кроме ув. OnYourLips - он дал ценный ресурс).
    У меня сейчас такая же ситуация, хочу обновить знания в современном мире PHP и JS, подбираю как правильно выстроить курс обучения. Согласен пройти уже снова всё с нуля, но "правильно".
    Итак, поделюсь с вами находками:
    • Книга "PHP Pandas" научит снова с азов (PHP7 тоже уделено внимание). Книга бесплатная.
    • Дальше рекомендую пробежаться по разделу PHP на замечательном сайте W3Schools. И не только по разделу PHP.
    • Jump Start PHP Environment - отличная новая книга, которая научит вас некоторым современным штукам при работе с PHP проектами: быстрым развертыванием виртуальных машин через Vagrant, использованию git, работе с Composer и затронет вопросы деплоя. Книга небольшая и максимально полезная.
    • Раз уж упомянули выше ресурс PHP The Right Way, стоит продолжить эту тему, так как автор этого ресурса выпустил целую книгу Modern PHP.
    • Awesome PHP - классный список на github с нужными библиотеками, хорошими ресурсами, книгами и т.д. по PHP.


    А дальше нужно садиться за изучение фреймворка. У нас по-прежнему очень популярен Yii, хотя у меня душа лежит изучить скорее Symfony. На западе сейчас очень популярен Laravel.

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

    @hscode
    Это легко, в таблице Users при создание пользователя добавь поле varchar 255 назови его recovery_token.
    В него записывай эту переменную $recovery_token = md5(uniqid(rand(), true));
    это рандомная строка.
    И потом по ней уже и востанавливай пароль пользователя.
    Ответ написан
    Комментировать
  • Как сделать обрамление блоков code тегами pre?

    @AndryG
    Регулярным выражением очень часто нельзя безошибочно и безопасно распарсить/конвертировать html код.

    Для 100% результата скормите свой текст DOM парсеру (их в php есть несколько), он корректно разберет код и отдаст вам дерево из DOM-элементов. Измените, как вам угодно это дерево и сохраните его обратно в строку html.
    Так вы обойдете стороной кучу ошибок в разборе исходной строки и генерации верного html.
    Ответ написан
    Комментировать
  • Как сделать один символ в HTML атрибуте placeholder другим цветом?

    Lumore
    @Lumore
    Front-end developer
    #input::-webkit-input-placeholder::first-letter {color:#c0392b;}
    #input::-moz-placeholder::first-letter          {color:#c0392b;}/* Firefox 19+ */
    #input:-moz-placeholder::first-letter           {color:#c0392b;}/* Firefox 18- */
    #input:-ms-input-placeholder::first-letter      {color:#c0392b;}
    Ответ написан
    2 комментария
  • Выбор базы данных для админки?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    храните в json файле
    Ответ написан
    Комментировать
  • Оправдано ли использование строкового первичного ключа?

    gbg
    @gbg
    Любые ответы на любые вопросы
    1. Никуда не годится. Ключ должен быть числом, это раз. Это влияет на производительность.
    2. Допущение об уникальности номеров автомобилей - мрак. Вполне возможна ситуация, когда появятся две машины с одинаковым номером, просто одна из них 100500 лет назад снята с учета.
    Ответ написан
    5 комментариев
  • Как получить синхронний печать?

    erniesto77
    @erniesto77
    oop, rb, py, php, js
    теперь я знаю как видят мои вопросы на stackoverflow англоговорящие люди))

    по теме попробуйте событие input propertychange
    input.on('input propertychange', function() {
        var val = $(this).val();
        p.text(val);
    });
    Ответ написан
    Комментировать
  • Как защитить изображения от PrintScreen?

    Serj-One
    @Serj-One
    i'm sexy and i know it
    Всё содержимое страницы априори доступно пользователю. Кому нужно, вытащат из кода.
    Защита от PrintScreen - турникет в поле, причём не просто не выполняющий свою функцию, но ещё и постоянно бьющий по бубенцам его поставившего.
    Ответ написан
    3 комментария
  • Какие существуют правила хорошего дизайна?

    @xlusv
    Я бы рекомендовал попробовать сверстать собственный макет самостоятельно, к примеру, на том же bootstrap. На своем опыте оцените, есть ли недостатки.

    Из правил:
    1. Дизайн не должен мешать пользователю. Чем меньше шума, тем лучше. В идеале - ничего лишнего на экране. И как можно меньше анимации.
    2. Функциональность превыше эффектов - сначала содержимое, только потом украшения
    3. Мыслить от абстрактного к конкретному, мыслить модульно - чистый холст делим на части (в пропорциях), потом добавляем компоненты в виде сплошных фигур, потом детализируем компоненты. Так мыслит и верстальщик, и программист. Хранить компоненты в отдельных файлах.
    4. Красивый дизайн - логичный дизайн. Все должно быть упорядоченно, иметь обоснованные размеры, отступы, цвета и эффекты
    5. Постоянство - одна цветовая схема, пропорции, типографика, элементы
    6. Стандарты и традиции. Поведение предсказуемо. Стрелка вниз на панели означает, что панель развернется вниз, а не вверх. Красный - опасное действие, зеленый - безопасное. Используйте стандартные иконки, вместо никому не знакомых.
    7. Смотрите на дизайн чужими глазами - наложите черно-белый фильтр или размытие и убедитесь, что содержимое не растворилось, акценты на месте. Продумайте, что случится с колонкой или меню, если текста будет слишком много или мало.
    8. Растровая графика для фотографий и многоцветных изображений. Все что может быть описано в векторе - делается в векторе.
    9. На каждое правило бывают исключения


    Книги и материлаы
    1. Design for Hackers: Reverse Engineering Beauty - технический взгляд на элементы дизайна
    2. Прочие книги по UX и web-design в списках бестселлеров amazon / ozon
    3. behance и dribbble - для анализа лучших практик
    4. Руководства по стилям: Google Material Design, Modern UI, Apple Human Interface Guidelines, ibm design. Тоже для анализа практик и правил для конкретной платформы.
    Ответ написан
    6 комментариев
  • Можно ли прочитать локальный файл??

    @Fellzo
    Браузер не даст сотворить такую вакханалию.
    Ответ написан
    Комментировать
  • Если диск/раздел не форматируется в ext4, ext3, ext2 значит он не исправен?

    Jump
    @Jump
    Системный администратор со стажем.
    Для начала надо посмотреть SMART диска.
    И уже по результатам решать.
    А остальное - гадание на кофейной гуще.
    Ответ написан
    Комментировать
  • Можно ли подняться на уровень выше в неймспейсе?

    27cm
    @27cm
    TODO: Написать статус
    Можно написать свой автозагрузчик, только вот две точки придётся заменить на что-то синтаксически правильное, например так:
    <?php
    
    namespace TestA\TestB\TestC;
    
    spl_autoload_register(function ($class) {
        $path = str_replace('\\__', '\\..', $class);
        // Затем используем realpath(), чтобы добраться до нужного файла...
    });
    
    $class = new __\__\TestClass();

    ideone.com/aXRNTc

    P.S.: Само собой, не стоит ожидать, что IDE вас правильно поймёт.
    Ответ написан
    1 комментарий
  • Что должен знать веб-программист по администрированию?

    edli007
    @edli007
    full stack, team lead
    Считаю что лучше уметь хорошо программировать, а не всего понемножку.
    Программист должен владеть линуксной консолью на уровне пользователя.
    Иметь понимание файловой системы линукса.
    Уметь настраивать конфиги программ и модулей с которыми работает.
    Уметь устанавливать программы и модули с которыми работает.
    Уметь ддалеть различные тесты и прочие вещи, напрямую связаные с разработкой.

    Однако не должен уметь, а обязан оставлять профессионалам, к примеру:
    Настройку безопасности сервера.
    Настройку вспомогательных программ, например монита.
    Решать вопросы ддоса и прочего, за исключением тех что касаютса напрямую его кода.
    Самостоятельно выбирать серверное железо (скажите еще что среднистатистический программист понимает в технических деталях, например отличия серверного проца от обычного)
    ....и можно так далее перечислять кучу вещей, что работодатели с любят отдавать, а программисты с радостью братся не имея должного опыта в области.
    Ответ написан
    Комментировать
  • Чем отличаются языки программирования PHP, PYTHON, RUBY?

    1. Аналогию с самими языками проводить не стоит. Аналогию стоит провести для платформ.
    Платформы вроде .net и java, которые разрабатывались для энтерпрайза, разумеется лучше для него подходят. И не важно даже, десктопное у вас приложение или веб-сервис. Важно, что в платформе есть поддержка нужных стандартов и технологий с гарантией качества от производителя.
    С другой стороны, многие компоненты таких платформ это closed-source. Поэтому, если вы не банк, а стартап, то для веб-сервиса выбирайте
    Ruby или Python.
    Социальную сеть можно сделать много на чем, но я бы делал на рельсах или джанге. А вот функционал сбербанк-онлайн я бы делал на ASP.NET MVC (т.е. на C#) или на джаве (на спринге например). Однако, тот же близзовский battle.net написан на спринге (сервер когда-то случайно отдал мне stack-trace после ошибки).

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

    2. Нет, не будет. Не должно быть, если точнее. Для пользователя язык общения с сервисом - HTTP. Если в современном веб-фреймворке нельзя нормально абстрагироваться от используемой технологии, это плохой фреймворк.

    3. На PHP много чего нельзя сделать. Вернее, КАК БЫ можно все, но нормально можно только веб. Именно поэтому для меня он не язык, а какой-то шаблонизатор - слишком у него дурная история и связь с веб (что нехорошо для языка общего назначения). Конечно, современные веб-фреймворки его очень хорошо причесывают, что даже можно работать с ним, но мы же о языках говорим..

    4. Для веб-проектов между Ruby, Python и PHP человек бы выбирал исходя из своих умений. У каждого языка своя экосистема (библиотеки, пакетные менеджеры, серверы приложений/плагины для веб-сервера) и довольно непросто знать все сразу. Именно поэтому все расходятся по своим лагерям и просто работают. Первичный выбор языка часто определяет его популярность. Лет 5 назад Руби всех рвал за счет Рельсов, сегодня Питон и PHP подтянулись в плане экосистемы, поэтому ситуация уже другая.
    Если человек таки сумел познакомиться с разными языками, он выберет тот, в котором ему проще мыслить. Модель ООП, статическая/динамическая типизация - все это определяет ощущения КОНКРЕТНОГО человека от КОНКРЕТНОГО языка.

    5. PHP учится быстрее всех, но если вы не знаете других нормальных языков, лучше его не учите - испортитесь как программист. Python и Ruby учатся примерно одинаково. Изучение C++ - совсем другая история, я бы не ставил его в один ряд с Питоном - этот язык несколько другого уровня и требует других (более глубоких) знаний о вычислительной технике (т.е. он 100% учится дольше, чем Python).
    Ответ написан
    22 комментария
  • Попросили проверить код, на что смотреть нужно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря зачем)). Я когда делаю Code Review критерии следующие:

    * Безопасность:
    - Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
    - Никаких trigger_error, только исключения.
    - Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
    - Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
    - За eval как правило шлю на **й.
    - @ допускается только в безвыходных ситуациях, например проверка json_last_error.
    - Перед работой с БД - обязательная проверка данных.
    - Никаких == и !=. Со swtich - единственное исключение, по ситуации.
    - Если метод возвращает не только bool, а еще что-то - жесткая проверка с ===, или !== обязательна.
    - Никаких условий с присваиваниями внутри. while($row = ...) - тоже идет лесом.
    - Магические геттеры/сеттеры разрешаются только в безвыходных ситуациях, в остальном - запрещены.
    - Конкатенации в sql - только в безвыходных ситуациях.
    - Параметры в sql - ТОЛЬКО через плейсхолдеры.
    - Никаких глобальных переменных.
    - Даты в виде строки разрешаются только в шаблонах и в БД, в пхп коде сразу преобразуется в \DateTimeImmutable (в безвыходных ситуациях разрешено \DateTime)
    - Конечно зависит от проекта, но как приавло должно быть всего две точки входа: index.php для web и console(или как-то по другому назваться) - для консоли.

    * Кодстайл PSR-2 + PSR-5 как минимум, + еще куча более жестких требований (для начала все то что в PSR помечено как SHOULD - становится MUST)
    - В PhpStorm ни одна строчка не должна подсвечиваться (исключением является typo ошибки, например словарик не знает какой-то из аббревиатур, принятых в вашем проекте). При этом разрешается использовать /** @noinspection *** */ для безвыходных ситуаций.
    - Если кто-то говорит, что пишет в другом редакторе и у него не подсвечивается, на эти отговорки кладется ВОТ ТАКЕЕЕНЫЙ мужской половой **й и отправляется на доработку)).

    * Организация кода:
    - Никаких глобальных функций.
    - Классы без неймспейса разрешаются только в исключительно безвыходных ситуациях.

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

    * Принципы MVC:
    - Никаких обработок пользовательского ввода в моделях, от слова совсем.
    - Никаких ***ть запросов в БД из шаблонов.
    - Никаких верстки/js/css/sql-ин в контроллерах.
    - В моделях НИКАКОЙ МАГИИ, только приватные свойства + геттеры с сеттерами.
    - В моделях разрешено использовать метод save(при наличии такого разумеется) только в исключительных ситуациях. Во всех остальных - либо insert, либо update.

    * Принципы SOLD:
    - Никаких божественных объектов умеющих во все.
    - Если метод для внутреннего пользования - private, никаких public.
    - Статические методы разрешаются только в случае безвыходности.

    * Принцип DRY разрешено нарушать в случаях:
    - Явного разделения обязанностей
    - В тестах (каждый тест должен быть независимым, на сколько это возможно)

    * Работа с БД:
    - Запрос в цикле должен быть РЕАЛЬНО обоснован.
    - За ORDER BY RAND() - шлю на***й.
    - Поиск не по ключам (конечно если таблица НЕ на 5 строк) запрещен.
    - Поиск без LIMIT (опять же если таблица НЕ на 5 строк) запрещен.
    - SELECT * - запрещен.
    - Денормализация БД должна быть обоснована.
    - MyISAM не используется (так уж)) )
    - Множественные операции обязательно в транзакции, с откатом если чо пошло не так.
    - БД не должна содержать бизнес логики, только данные в целостном виде.
    - Не должно быть нецелесообразного дерганья БД там, где без этого можно обойтись.

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

    * О людях:
    - "Я привык писать так и буду дальше" - не вопрос, ревью пройдешь только когда поменяешь свое мнение.
    - "Я пишу в vim-е и мне так удобно" - здорово, код консолью я тоже в нем пишу)) но есть требования к коду, если в них не сможешь - не пройдешь ревью.
    - "Я скопировал этот страшный метод и поменял 2 строчки" - это конечно замечательно, но по блейму автор всего этого метода ты, так что давай без говняшек, хорошо?
    - "Оно же работает!" - вот эта фраза переводится примерно так: "да, я понимаю, что пишу полную хрень, но не могу писать нормально потому, что руки из жо", я правильно тебя понял?))
    - "У меня все работает!" - рад за тебя, а как на счет продакшна?
    - "Там все просто" - не используй слово "просто", от слова "совсем". Вот тебе кусок кода (первого попавшегося с сложной бизнес логикой), где там ошибка (не важно есть она, или нет)? Ты смотришь его уже 2 минуты, в чем проблема, там же все "просто"))

    * Всякое:
    ActiveRecord (это я вам как в прошлом фанат Yii говорю) - полное говно, примите за исходную. По факту у вас бесконтрольно по проекту гуляют модельки с подключением к БД. Не раз натыкался на то, что в тех же шаблонах вызывают save, или update (за такое надо сжигать).
    То, что используется Laravel - это печально((. Что бы выполнить требования приведенные выше, приходится "воевать" с фреймворком.

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

    UPD

    Формализировал данные критерии по ссылочке: https://github.com/index0h/php-conventions
    Ответ написан
    55 комментариев