Задать вопрос
  • Почему private метод не возвращает результат?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Настоятельно рекомендую подучить основы РНР.
    public function showProfile()
    {
        return $this->checkUserAuth();	
    }
    Ответ написан
    Комментировать
  • Почему private метод не возвращает результат?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ошибка в методе showProfile... подсказывать дальше не вижу смысла.

    p.s. советую вам почитать таки документацию к PHP.
    Ответ написан
    2 комментария
  • Кому нужны дорогие и сложные сайты?

    voidnugget
    @voidnugget
    Программист-прагматик
    Высоконагруз начинается c 50К rps и 1GBit живого http трафика без статики.
    Заканчивается где-то на 10M rps и 40GBit трафика. На одну ноду.

    А вот выступления на HL++ в стиле: "Мы взяли, смасштабировали наше РНР 14K rps/node на 32 машины, 20 из которых простаивают на 50%", вызывает у меня ухмылку. Наверное, по этому и не развит, что у людей как-то профилирование и вертикальное масштабирование (эффективная утилизация аппаратных мощностей) в мозгу не приелось.

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

    По поводу вариантов:
    1. Гос. закупки сулят бумажными проблемами и сертификацией.
    2. У "стартаперов" нет в мозгу должного QA и понимания долгосрочных перспектив, особенностей поддержки. Конкурсы и подобное обычно создаются с целью "вот мы вам дадим N рублей с расчётом, что через 5 лет вы сможете нам вернуть N * 10 рублей"
    3. Читаем пункт 2.

    Проекты на node.js/golang в 14K RPS и 1GBit, с фронтендами на React/Meteor, сложными или высоконагруженными называть не стоит, они сейчас скорее "стандартные" и "обоюдные".
    Ответ написан
    Комментировать
  • Развертывание web приложения на Go?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Как это работает, чтобы понимали. Я опишу истинно правильный путь, но долгий: (как подсказал pygame , по бенчмаркам https://gist.github.com/hgfischer/7965620 всё же нативный хттп сервер в Go быстрее, чем nginx с fcgi, т.к. у Go гавняная реализация fcgi, поэтому вместо fcgi быстрее будет обычный http proxy_pass).

    1) Ставится веб-сервер нормальный, а не тот, который есть в самом Go. То есть, ставим nginx. Настраиваем ему все url маршруты, настраиваем отдачу статики.

    2) За динамикой nginx будет обращаться к нашему Go демону. По протоколу fast-cgi. Именно по нему, потому что nginx его умеет и вообще он хорош (upd: но не в Go). Это короч бинарный протокол по которому nginx передаёт в нашу Go программу HTTP заголовки запроса от браузера и получает обратно HTTP ответ. Для этого ставим простейшую обёртку для fast-cgi под названием spawn-fcgi, она будет преднастраивать и запускать нашу Go программу, готовую для общения по протоколу fast-cgi.

    3) На случай, если наша Go программа падает. Либо уже у нас есть система, которая следит за демонами и поднимает их в случае падения (systemd, upstart), тогда конфигурируем её, либо ставим таковую и тоже конфигурируем.

    Привожу пример как это всё сделано у меня (самый популярный стек технологий) на Debian:

    1) nginx
    server {
    	server_name otboi.****;
    	listen 80;
    	include fastcgi_params;
    ...
    	
    	location / {
    		fastcgi_pass unix:/var/run/otboinik.sock;
    	}


    2) systemd конфиг, который стартует нашу Go программу, завёрнутую в spawn-fcgi
    [Unit]
    Description=Otboinik
    
    [Service]
    Restart=always
    Environment=OTBOINIK_BIN=/opt/гыы/otboinik/bin/otboinik
    Environment=OTBOINIK_PID=/var/run/otboinik.pid
    Environment=OTBOINIK_USER=гыыыы
    Environment=OTBOINIK_SOCKET=/var/run/otboinik.sock
    Environment=OTBOINIK_SOCKET_USER=гыыыыы
    Environment=OTBOINIK_SOCKET_MODE=0666
    ExecStart=/usr/bin/spawn-fcgi -s $OTBOINIK_SOCKET -M $OTBOINIK_SOCKET_MODE -n -P $OTBOINIK_PID -u $OTBOINIK_USER -U $OTBOINIK_SOCKET_USER -G $OTBOINIK_SOCKET_USER $OTBOINIK_BIN
    
    [Install]
    WantedBy=multi-user.target


    3) Сам Go код
    import (
    	"net/http"
    	"net/http/fcgi"
    )
    
    type Server struct {
    }
    
    func (s Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
           // чиста пример
            jsonblob := r.FormValue("events")
    	if jsonblob == "" {
    		w.WriteHeader(http.StatusNotAcceptable)
    		return
    	}
    }
    
    func main() {
    	server := Server{}
    
    	func() {
    		fcgi.Serve(nil, server)
    	}()
    
    	waitchan := make(chan int, 1)
    	<-waitchan
    }
    Ответ написан
    4 комментария
  • Интерактивная поэтажная карта здания, палаты и койки?

    dedalik
    @dedalik
    Веб разработчик
    Если делать всё это с нуля потребуется много времени и сил. Посмотрите вот на это готовое решение Mapplic, возможно как раз то, что нужно, правда плагин платный

    Javascript версия плагина
    Wordpress плагин
    Ответ написан
    2 комментария
  • Что интересного можно написать на PHP для получения опыта?

    Corto
    @Corto
    Бес_Системный
    Добивай C++ или Java. Как понимаю ближе тебе это, раз для себя использовал..За два года же накодил чего-нибудь. И что значит "вынудило меня заняться вебом"? Если постоянно идти по вынуждению, то далеко не уедешь.
    Ответ написан
    Комментировать
  • Изучать ли CMS?

    @aspej
    Руководитель проектов
    Конечно же, стоит сначала изучить язык PHP, а потом уже браться за CMS.
    Без изучения PHP понимания того, что происходит в CMS будет, как минимум, не полным.

    И зависит от работодателя.
    Либо это веб-студия, которая занимается разработкой типовых сайтов на популярных CMS. Надоедает иногда одно и то же делать.
    Либо веб-приложения, или внутренние проекты работодателя (что интереснее). Там знания CMS не требуется, а требуется, в основном, различные PHP фраемворки
    Ответ написан
    Комментировать
  • За что программист получает деньги?

    reeroe
    @reeroe
    UX/UI дизайнер
    Но вот что я не могу понять, если человек берет по часовую оплату, но из половины и даже больше этих часов он разбирается сам, как это можно сделать, получается, что он не совсем хороший программист? Или это в принципе нормальное явление? И как тогда поступать считать меньшее количество часов ?


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

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

    Olej
    @Olej
    инженер, программист, преподаватель
    Но вот что я не могу понять, если человек берет по часовую оплату, но из половины и даже больше этих часов он разбирается сам, как это можно сделать, получается, что он не совсем хороший программист? Или это в принципе нормальное явление? И как тогда поступать считать меньшее количество часов ?


    А если оперуполномоченный МУРа сидит и читает материалы дела - то засчитывать ему это как рабочее время или как прогул?
    Или давайте ему засчитывать рабочим только "чистое" время: или когда он несётся в погоне вывалив язык, или когда в стрельбанине участвует...
    Ответ написан
    6 комментариев
  • За что программист получает деньги?

    sabramovskikh
    @sabramovskikh
    За работу. Если грузчику платят за то, что он загружает фуры, почасовая оплата, то зачем ему платить когда он таскает мешки и возвращается за мешком на легке, ведь он не работает?
    Код нельзя написать хорошо никогда. Можно стремится только к этому. Пока он разбирается это процесс разработки продукта. Почитайте книгу о циклах разработки ПО и все поймете
    Ответ написан
    8 комментариев
  • Почему так сильно подорожали аккаунты pro на российских биржах фриланса? С чем это связано?

    JohnDaniels
    @JohnDaniels
    Так это же отлично. Больше абонентская - меньше демпингующих школьников. Забыли про сотни "зделаю за отзыв абращайтесь" под каждым заказом?
    Ответ написан
    2 комментария
  • Действительно ли Ruby сложнее PHP/Python? Если да, то почему?

    @eoffsock
    Кодер (Rails)
    Я пришел в разработку на Rails четыре года назад, не зная решительно ничего. Учился на ходу. Попутно осваивал SQL в режиме «вот процедура на PL/SQL длиной в шесть экранов, нужно чтобы работало вчера»
    С тех пор вакансий меньше не стало.

    Другое дело, что знать Rails мало. Нужен фронт, хотя бы немного. Slim/HAML.
    В среде RoR фетиш на тесты, значит как минимум RSpec, Capybara. Как минимум один гем для работы с фоном — delayed_job, Sidekiq.
    К этому прибавить умение разворачивать все это дело и стартовать в production — Capistrano/Mina, unicorn.
    Ценится видеть хоть раз в жизни Devise и Cancan.
    Остальное обычно зависит от проекта.

    Дальше — правила хорошего тона.
    https://github.com/bbatsov/rubocop
    https://github.com/railsbp/rails_best_practices
    https://github.com/bbatsov/rails-style-guide

    А потом вы уже внезапно крепкий мидл или начинающий сеньор и советы обычно уже не нужны.

    UPD: Да, в целом стоит начинать с Ruby/Rails. Но мое мнение предвзято — я не люблю PHP, хотя с уважением отношусь к NodeJS.
    Ответ написан
    Комментировать
  • Почему нежелательно использовать курсив в вебе?

    @archelon
    Правила типографики для веба и для «невеба» одни. Если текст полностью курсивом, то да — фуфуфу. Читать такое тяжело.
    Если, как и положено, курсив используется для выделения отдельных слов или фраз, то используйте на здоровье.
    Ответ написан
    Комментировать
  • Как контролировать SEO специалиста?

    @sergekosykh
    День добрый!

    Да, массовая покупка ссылок сейчас опасна (у Яндекса, например, актуален алгоритм "Минусинск"). Но только ОЧЕНЬ массовая и для достаточно серьезного, известного (пусть даже и нишевого) ресурса. Одной покупкой ссылок серьезное продвижение в естественную выдачу Вы, скорее всего, не осуществите (особенно по высоко-конкурентным запросам).

    Простое выставление мета-тэгов (в т.ч. title) - действие необходимое, но не достаточное. В идеале - нужно серьезно заниматься качеством HTML-кода на сайте, в том числе и тем, чтобы он удовлетворял SEO-нуждам.

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

    Продвижение каждого конкретного проекта - это, как говорится, "отдельная песня".

    По Вашим конкретным вопросам:
    1) и тот и другой специалист выдают частичное решение. Я бы не останавливался только на одном варианте, или только на другом.
    2) Да, действительно. Это постоянный процесс, как выращивание деревьев "бансаи" у японцев. В разметке при высокой конкуренции могут быть актуальны даже такие моменты, как наличие микроформатов в разметке (а они есть далеко не на всех сайтах) и проч.
    3) Объективно - только количеством обращений к Ваши продающим менеджерам из Интернета. Есть несколько способов понять, кто откуда пришел к вашим продающим менеджерам и что купил. Но тут нужно, чтобы web-продвиженцы и Выши продавцы работали бы в тесной интеграции. Иначе "воз" не "сдвинется". С отчетами - сложно и субъективно, зависит от ситуации, ниши и магазина.
    4) Сроки могут быть любыми. В т.ч. бесконечными. Алгоритмы ранжирования сайтов современных поисковиков зачастую невозможно предугадать. Даже параметр "вывод в ТОП" сейчас имеет довольно скользкий РЕАЛЬНЫЙ (подчеркиваю: реально-коммерческий) смысл, и многие поисковики прикладывают к тому, чтобы он оставался "скользким" максимальные усилия, чтобы подорвать рынок SEO-услуг.
    Ответ написан
    Комментировать
  • Как разработаться в математике взрослому человеку?

    @mamkaololosha
    Тут только брать и учить/повторять 1-2 курсы заново целиком. Это типичная проблема, если в конце-концов пришлось уйти от областей с матанами. Просто почитать может не прокатить. Смотрите тестовые задания в cs-center или шад яндекса.
    Ответ написан
    1 комментарий
  • Как начать познание информационной безопасности?

    ranebull
    @ranebull
    Можно начать с просмотра тех же видео от Яндекс КИТ (Курсы Информационных Технологий):
    Безопасность Unix-подобных ОС
    Криптография, шифрование
    Обзорная лекция по безопасности
    Сетевая безопасность
    Информационная безопасность
    Безопасность информационных систем
    Информационная безопасность
    Безопасность информационных систем
    Из книжек можно прочитать Андрей Бирюков: Информационная безопасность: защит...
    На том же Хабре можно пролистать раздел ИБ, чтобы понять, что можно выбрать
    InfoSecurity
    Из общего, думаю, уже можно будет понять, какими прикладными вещами заниматься.
    Ответ написан
    5 комментариев
  • Знаете ли вы программистов которые в одиночку создали крутой проект?

    @asd111
    Google - два парня Сергей Брин и Ларри Пейдж
    Facebook - начал Марк Цукерберг
    Instagram - два парня, один делал приложение для iPhone, другой делал сайт, потом заработали расширились
    MsDOS - первую версию сделал один человек, потом Баллмер у него купил за 50 000 $ и права перешли Microsoft
    Nginx - начал Игорь Сысоев
    Компьютер Apple I - дело рук Стива Возняка
    Linux - начал Линус Торвальдс
    Git - начал Линус торвальдс
    Redis - Salvatore Sanfilippo ( antirez )
    Minecraft - начал Маркус Перссон ( также известный как notch )
    Dropbox - начал Дрю Хьюстон
    Shadertoy - создан Iñigo Quilez ( также известен как iq )
    C++ - начал Бьёрн Страуструп
    Python - Гвидо ван Россум
    PHP - Расмус Лердорф

    SimplaCMS - начал один человек
    DLE CMS - начал один человек
    TYPO3 CMS - начал один человек

    P.S. ответ редактировался и дополнялся
    Ответ написан
    20 комментариев
  • Знаете ли вы программистов которые в одиночку создали крутой проект?

    @vpranker
    Dropbox, если тебе это пример то вот.
    Дрю Хьюстон, написал его на Питоне, один)
    Ответ написан
    Комментировать
  • Насколько код ООП и что бы вы посоветовали по его улучшению?

    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 комментариев
  • Насколько код ООП и что бы вы посоветовали по его улучшению?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    забейте на время на MVC, почитайте про SOLID.

    1) mysql_* функции депрекейтед, используйте pdo (mysqli слишком низкоуровневая штука)
    2) делать 2 раза md5 не имеет никакого смысла. Сейчас можно генерить миллиарды хэшей в секунду на видеокартах так что подбор коллизии к хэшу займет не сильно много времени и большая часть паролей будет подобрана за первые пару часов. Используйте password_hash и password_verify. Для PHP < 5.5 есть флэбэк написанный на PHP.
    3) вы нарушили принцип единой ответственности, это к вопросу о том насколько ваш код ООП. Ну и принцип инверсии зависимостей туда же....
    Ответ написан
    5 комментариев