Задать вопрос
  • Jquery события при checked?

    karjan
    @karjan Автор вопроса
    Вот решение
    $( "input:checkbox" ).on("change", function() {
            $('.reg').slideToggle();
        });
    Ответ написан
  • Какая разница между C# и Python?

    FeNUMe
    @FeNUMe
    C# - компилируемый со статической типизацией, но завязан на наличие в системе библиотек .Net. Разрабатывается MS, потому естественно интеграция с виндой будет лучше.

    Python - интерпретируемый с динамической типизацией, для работы требуется либо установленный интерпретатор, либо включать его в поставку(но это не 80мб, а примерно 13 без применения доп. сжатия)

    Если нужен нативный GUI то лучше остановится на С#, хотя питоновские tk/pyqt/pyside/wxwidgets вполне могут выглядеть родными, но усилий придется приложить больше.
    Если нужна кроссплатформенность - выбирайте питон.
    Ответ написан
    3 комментария
  • Какая разница между C# и Python?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Просто, что отличает эти языки при написании десктопных приложений?
    Нативность процесса, в первую очередь. И возможно конечная кросс-платформенность полученных решений. В C#, точнее в платформе .NET есть отличная интеграция (лучше слова подобрать не смог) с такими привычными многим штуками как WinForms например, и вообще он изначально создавался конкретно для разработки чего-то подобного, именно под Windows (в первую очередь). Python изначально разрабатывался как платформо-независимый язык и в своём базовом арсенале, чего-либо сравнимого с функционалом построения различных форм на C#/.NET, из коробки не имеет. А ещё у C# есть отличная IDE идущая вместе с ним в комплекте (Visual studio), причём бесплатная, а ещё там есть WPF и разные другие штуки. Но я бы всё равно не сравнивал языки в таком контексте, слишком "топорное" сравнение.

    Скорость? (хотя это метрика относительная, у любого языка есть 100500 способов ускориться)
    Я бы не стал заострять внимание на этом показателе.

    На каком языке проще использовать возможности 64-битной архитектуры?
    Не понятно, про какие именно возможности идёт речь... Но, по моему, от языка это вообще мало зависит.

    На каком языке проще сделать программу что бы она запускалась как можно на больших версиях винды без переделки, т.е. XP, Vista, 7, 8, 8.1, 10 и т.д.?
    На любом языке, в но в качестве платформы - я бы порекомендовал конкретно .NET Framework 4.0, т.к. более поздних версий оного под XP, насколько я помню, не существует.

    *но тут стоит обратить внимание, на то, что с большей долей вероятности, в систему для начала всё-таки придётся установить .NET, т.к. нужная версия оной есть далеко не всегда. Эту проблему так же решают инсталляторы, но размер инсталлятора самой платформы - тоже далеко не маленький. Современные ОС семейства Windows (10-ка точно) предалгают пользователю загрузить нужный .NET Framework при его отсутствии - автоматически.

    На каком языке проще добраться до системных API если мне надо добраться до аудиоустройства или видеокарты? (ну просто С мы тут не рассматриваем в сравнении)
    Не могу сказать наверняка, но скорее всего, ни на каком из них. Из коробки, языки высокого уровня, обычно не поддерживают низкоуровневые операции. Готовых же библиотек, в т.ч. низкоуровневых, для компенсации данного недостатка хватает обычно для любых языков. А вообще, это очень обширная тема, "добраться" до устройства можно очень разными способами... и на разных уровнях. Можно написать свой драйвер (в этом случае, вряд ли какой-то язык из списка подойдёт), а можно использовать WinAPI или какие-то готовые функции написанных кем-то ранее драйверов...
    Ответ написан
    Комментировать
  • Какая разница между C# и Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    что отличает эти языки

    Основное отличие - статическая типизация.

    На каком языке проще добраться до системных API

    Если под Windows, то на C#.
    Ответ написан
    Комментировать
  • Как выложить landing page (node js) на VPS SSD хостинге?

    rockon404
    @rockon404
    Frontend Developer
    Самый простой вариант.

    1. Создаем рабочую директорию:
    mkdir workplace

    2. Переходим в рабочую директорию:
    cd workplace

    3. Загружаем репозиторий со своим проектом:
    git clone [path to project]

    4. Переходим в директорию проекта:
    cd [project directory name]

    5. Устанавливаем зависимости:
    npm install

    6. Если есть конфиги, секреты и api ключи, добавляем.

    7. Настраиваем NGINX
    server {
        listen 80;
        server_name example.com;
        access_log /var/log/nginx/example.com;
    
        location / {
            proxy_pass         "http://127.0.0.1:3000";
        }
    }


    8. Запускаем:
    npm start
    Ответ написан
    Комментировать
  • Golang to many connections как избежать?

    Например, можете вынести переменную db в отдельный пакет и сделать её там глобальной. В функции init() этого пакета сделайте подключение к БД. Потом просто используйте эту переменную там, где надо.
    Ответ написан
    2 комментария
  • Какие достоинства/недостатки у работы по SCRUM?

    @kn0ckn0ck
    Продюсер
    Вопрос конечно с подвохом, потому что для одного преимущества, а для другого это же недостатки :) Тут уж на любителя... Но по мне так:

    преимущества:
    - всегда есть работа
    - много общения с коллегами (в том числе противоположного пола)
    - получение знаний в смежных с разработкой областях
    - нет персональной ответственности за результат
    - цели спринта/команды обычно выше желаний всяких начальников

    недостатки:
    - интенсивный режим работы, расслабиться не дадут
    - на профессионализм приходится забивать в угоду целей спринта
    - нужно уметь обосновывать затраты на работу с тех. долгом
    - интровертам сложно, приходится раскрываться на ретроспективах
    - постоянно дергают по всем возможным вопросам, ибо ответственность командная
    - индивидуальной премии нет, оценивается командная работа
    - в команде все равны, непонятно как стать начальником и всеми командовать :)
    Ответ написан
    Комментировать
  • Правильно ли я делаю, что все кроме работы с БД выношу в отдельные классы и потом внедряю как DI?

    @kttotto
    пофиг на чем писать
    Все эти DI, IoC придумали для слабой связанности. Т.е. их использование оправдано, если Вы хотите разорвать сильную зависимость между какими-то модулями или объектами, т.к. в будущем ожидаете изменений или хотите добавить возможность тестирования какого-то участка кода.

    Если Вам не принципиально ни то, ни другое, то не стоит доводить до фанатизма)

    И кстати, если хотят модульной тестируемости, то зависимость от бд рвут в первую очередь. Иначе получатся интеграционные тесты, зависимые от данных в бд. Ну и если в будущем предполагается, что захотят перейти на другую бд, то в этом случае тоже, работу с ней желательно вынести в абстракцию и потом инжектить.
    Ответ написан
    1 комментарий
  • Кто писал свою CMS?

    @karminski
    Senior React.JS Developer
    1) Было строгое ТЗ
    2) Нет
    3) Никаких WYSIWYG-редакторов. Чистый HTML.
    4) Больше похоже на CRM/ERP-системы
    5) Да, каждый модуль отвечал за свою задачу
    6) Сначала использовали TWIG, потом отказались от него. Причин было много, сложно всё написать. Сейчас обычный PHP.
    Ответ написан
  • Curl стал чаще тормозить. Как определить причину?

    gobananas
    @gobananas
    finishhim.ru
    Смотрите в curl_getinfo там есть:

    CURLINFO_TOTAL_TIME - время выполнения операции в секундах;
    CURLINFO_NAMELOOKUP_TIME - время разрешения имени сервера в секундах;
    CURLINFO_CONNECT_TIME - время, затраченное на установку соединения, в секундах;
    CURLINFO_PRETRANSFER_TIME - время, прошедшее от начала операции до готовности к фактической передаче данных, в секундах;
    CURLINFO_STARTTRANSFER_TIME - время, прошедшее от начала операции до момента передачи первого байта данных, в секундах;
    CURLINFO_REDIRECT_TIME - время, затраченное на перенаправление, в секундах;

    Если всё это у вас быстро отрабатывает то проблема у вас, если какая-то из переменных велика то какая - посмотрите где идёт задержка времени. Если проблема у них, то тут особо ничего не сделать, если не в curl то можно думать уже...
    Ответ написан
    1 комментарий
  • Как получить ответ от сервера на php?

    gobananas
    @gobananas
    finishhim.ru
    Тоже можно создавать один файл(скрипт) и на него слать все запросы

    Можно, гуглите роутинг на php

    Как еще можно обмениваться данными с сервером

    А как нужно вам? Можно в заголовок X-Accept... в header ответ запихать.

    короткие сообщения - "данные получены успешно", "почта отправлена" и.т.д?

    echo "ok";
    echo "почта отправлена";


    Можно в JSON отдавать ответ, но суть та же...
    Ответ написан
    Комментировать
  • Хочу написать свою хостинг панель, поможете?

    Занимаюсь сейчас тем же самым (пока, впрочем, на стадии проектирования архитектуры). Из того, к чему я пришёл сразу - так это то, что панель такую есть смысл делать только под одну ОС. Если пилить одновременно поддержку, скажем, CentOS и Debian, на всё это уйдёт неприлично много времени.

    Если вы собираетесь решать задачу путём "взять скрипты у VestaCP" - сразу забудьте. Не ваш уровень ещё, стало быть. Если вы хотите написать безопасную, адекватно расширяемую, не глючную панель - вы должны понимать, как работают эти функции на уровне ОС, веб-сервера, сервера БД и др. компонентов.
    Ответ написан
    Комментировать
  • Насколько код ООП и что бы вы посоветовали по его улучшению?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    <?php
    // PSR-1, PSR-2, PSR-4 Читаем и пользуем!
    // namespace все дела... "Model_admin" - это прошлое.
    // phpDocumentor - твой друг, прописывай всюду типы данных
    class Model_admin extends Model
    {
    // Лишний перевод строки
        private $name;
        private $password;
        private $code;
        private $mail;
    // Не информативное название. get model admin... что бы это значило...
        public function get($login, $password) {
    // Где проверка аргумантов? Влететь может что угодно
            $this->name = $login;
            $this->password = $password;
    // Модель НЕ должна управлять подключением к БД, это должно выполняться выше в коде
            $this->db_connect();
    // Код вообще проверялся?)) у вас закрывающей строки нет.
            $result = msql_query("SELECT 'login', 'password', 'mail' FROM 'admin_authorization'";
    // сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
            $arr = mysql_fetch_array($result);
    // Зачем нужен цикл, это дро*ба БД!!! Вытягиваете одну запись по логину и проверяете соответствует ли пароль
            do {
    // Лишний перевод строки
                if ($login === $arr['login']) {
    // Лишний перевод строки
                    if (
                        md5( md5( trim( $password ))) === $arr['password']
                    ) {
                        $this->mail = $arr['mail'];
                        $this->random_code();
    // Перед return лучше делать перевод строки
                        return true;
                    }
    // Лишний перевод строки
                }
    // сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
    // Присваивание в условиях управляющих кнострукций лучше не делать, это операции разного характера
            } while ($arr = mysql_fetch_array($res));
    
            return false;
    // Лишний перевод строки
        }
    
        private function random_code($length = 15) {
    // Где проверка аргумантов? Влететь может что угодно
            $symbols = '0123456789abcdefghijklmnopqrstuvwxyz_-~!+*%$#&';
    
            for ($i = 0; $i < (int)$length; $i++)
            {
                $num = rand (1, strlen ($symbols));
                $this->code .= substr ($symbols, $num, 1);
            }
    // сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
            $bool_update = mysql_query('UPDATE "admin_authorization" SET code="'.$this->code.'" WHERE login="'.$this->name.'"');
    // Вот так писать плохо, всегда используйте фигурные скобки.
            if ($bool_update) $this->send_code();
    // Лишний перевод строки
        }
    
        private function send_code() {
    // Модель НЕ должна отправлять письма, под отправку обычно пишется отдельная подсистема/сервис
            mail ($this->mail, "Admin code", $this->code);
        }
    
        public function check_code($user_code) {
    // Где проверка аргумантов? Влететь может что угодно
    // SQL инъекция!!!!
    // сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
            $this->code = mysql_query("SELECT 'code' FROM admin_authorization WHERE code='".$user_code."'");
    // Вот так писать плохо, всегда используйте фигурные скобки.
            if ($this->code != '') return true;
        }
    // Лишний перевод строки
    }
    Ответ написан
    13 комментариев
  • Какую взять ORM для своего проекта?

    @D3lphi
    Возьмем ORM из двух популярных PHP-фреймворков. Первая будет Eloquent ("Родная" для фреймворка Laravel), а вторая - Doctrine (Одна из доступных ORM в фреймворке Symfony). Кардинальным отличием этих двух "систем" является то, что первая разработана на основе паттерна Active Record, а вторая - с использованием паттерна Data mapper. Чем же они отличаются? Приведу абстрактные примеры кода для первого и второго паттерна:

    Active Record:
    $user = new User(); // Создаем "сущность" нового пользователя.
    $user->login = 'D3lph1'; // Устанавливаем его логин равным 'D3lph1'.
    $user->password = '123456'; // Устанавливаем пароль этому пользователю.
    $user->save(); // Сохраняем пользователя.


    Все, новый пользователь создан и находится в базе данных. Теперь, Data mapper:
    $user = new User();
    $user->login = 'D3lph1'; // Устанавливаем его логин равным 'D3lph1'.
    $user->password = '123456'; // Устанавливаем пароль этому пользователю.
    
    $manager = ... // получаем объект менеджера (Например, из DI контейнера).
    $manager->persist($user); // "Скармливаем" новоиспеченного пользователя нашему менеджеру.
    // $manager->persis($user1); // Мы можем создать еще одного пользователя и уведомить менеджер об этом.
    // $manager->persis($user2); // И еще одного...
    $manager->flush(); // После выполнения этого метода данные отправятся в базу данных.


    Очевидно, первый способ куда проще. Но не все так просто. Дело в том, что паттерн Active Record нарушает принцип единственной ответственности (Single responsibility SOLID). И поэтому, в какой-то степени, может считаться антипаттерном. (Но это ни в коем случае не значит, что его не нужно использовать, для большинства проектов "хватит" за глаза). Наша сущность пользователя делает слишком много. Она не только представляет данные, но и еще работает с ними. В больших проектах это может усложнить поддержку кода. Data mapper, напротив же, разделяет представление данных в сущность (user) и работу с данными (manager, в данном примере. Также, за работу с данными отвечает репозиторий. Вы столкнетесь с ним, как только вам потребуется получить данные из БД (Doctrine)). В небольших проектах вы не заметите особой разницы. Разве что во втором случае увеличится количество классов. Так, в Eloquent вы создаете 1 модель, а в Doctrine - сущность и репозиторий.

    Все современные ORM включают в себя также, так называемые, query builder'ы. Они помогают отказаться от языка запросов, такого как SQL. Вы будете составлять запросы таким образом:
    $result = $qb
          ->select(['id', 'login'])
          ->where('id', '<>', 3)
          ->get();


    Собственно, query builder'ы помогают абстрагироваться от конкретной СУБД. То бишь, вы написали запрос 1 раз, а затем от того, какую СУБД вы используете будет зависеть выходной sql код. Генерация этого кода будет произведена абсолютно прозрачно для вас.

    Обе ORM имеют работать с отношениями. Вам нужно будет указать, как таблицы относятся друг к другу, а затем вы сможете удобно обращаться к связанным сущностям.

    Теперь конкретно. Так как вы только начинаете осваивать ORM, я бы порекомендовал начать с Eloquent. Она гораздо проще, чем Doctrine, да и более производительная, к тому же. Как освоите Eloquent, смело учитесь работать с Doctrine. Она обязательно должна быть "в копилке" ваших скиллов, так как является самой мощной в "мире" PHP.

    Успехов!
    Ответ написан
    2 комментария
  • В чем заключается работа системного архитектора?

    gobananas
    @gobananas
    finishhim.ru
    Системный архитектор на этапе планирования проекта исходя из предположений о количестве пользователей и их активности выдвигает прогнозы о том какую базу данных выбрать, как организовать кластер, какое железо и сколько надо, какой тип масштабирования выбрать - вертикальный, горизонтальный, какое место в системе скорее всего станет узким в первую очередь, какое во вторую (система упрётся в лимит по процессору или оперативной памяти или жёсткому диску) нужно ли разделять сервера на БД и файловый.

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

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

    Часто прокатывает и без системного архитектора, а иногда не прокатывает и случаются такие вещи Как бороться с лимитом в 1000 записей LDAP? или такие Можно ли в MySQL создать индекс для ORDER BY по условию?
    Ответ написан
    Комментировать
  • Как найти пустые строки вокруг контейнера?

    gobananas
    @gobananas
    finishhim.ru
    Разные варианты:
    preg_replace('/\n\n/ism', '<br>')
    preg_replace('/\n\n<pre>/ism', "<br><pre>")
    preg_replace('/<\/pre>\n\n/ism', "</pre><br>")
    Ответ написан
    Комментировать
  • Всегда ли multi insert лучше, чем несколько обычных?

    gobananas
    @gobananas
    finishhim.ru
    Да всегда, выигрываете время на перестраивании индексов. У меня выигрыш где-то в 40 раз был.
    Ответ написан
    Комментировать
  • Как написать регулярку?

    gobananas
    @gobananas
    finishhim.ru
    CyberHost прав, можно ещё количество цифр жёстко ограничить:
    [0-9]{3}(x|х)[0-9]{2}
    https://regex101.com/r/mV3wA0/1
    Ответ написан
    1 комментарий
  • Какой аналог парсера позиций посоветуете?

    gobananas
    @gobananas
    finishhim.ru
    По Яндексу у меня как раз такой парсер простаивает сейчас. API могу надстроить над ним абсолютно любое какое вам нужно. С гуглом всё сложнее, но можно помозговать...
    Ответ написан
    2 комментария