Задать вопрос
  • Golang подходит ли для создания сайтов?

    @MadridianFox
    Web-программист, многостаночник
    1) Go компилируемый, само собой скорость выше, но если вы на маленьком сайте упираетесь в скорость исполнения кода, то проблема скорее в коде, и выбор более быстрого языка избавит вас только от симптома, но не от болезни
    2) на seo влияет только то ЧТО вы отдаёте пауку. Не важно на каком языке пишется программа, которая отдаёт html
    3) Программа написанная на go сама работает как сервер. Более того, это не какой-то сервер приложений, как например tomcat, нет, вы сами будете писать цикл обработки входящих соединений - т.е. вам необходимо этот самый серер реализовать. В отличие от php+apache, где в качестве сервера выступает apache, который при необходимости вызывает php. Ставить ли apache или nginx перед go сервером вы решаете сами.
    4) Поддерживает. На скорость работы СУБД не влияет то, на каком языке написана программа, которая к ней обращается.
    5) Фреймворков уровня Yii2 или Symfony не наблюдается. Ситуация такая же как и с NodeJS - что-то есть, но комбайнов нет.
    6) Если что-то может слушать соккет - на этом можно написать сайт. Любой. Другое дело, что сайты визитки на Go не пишут (только ради забавы), а крупные сайты вообще имеют сложную архитектуру, такую что язык уже не имеет значения.
    7) Для php разработчика - да. Как минимум вы меняете скриптовый язык на компилируемый. Это значит что любое изменение кода требует компиляции, остановки работающего сервера, загрузки бинарника на его место и запуск. Кроме того вы меняете Stateless модель работы кода на полноценно работающую программу. Если на php у вас скрипт запускался заново при каждом http запросе, то программа на go запускается один раз и после этого принимает множество запросов.
    Ответ написан
    10 комментариев
  • Какие самые распространённые уязвимости на YII 2?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Это openSource проект, если бы кто-то знал уязвимости уже бы исправили. Про те которые были, можно прочитать тут:
    https://github.com/yiisoft/yii2/blob/master/framew...

    Но стоит отметить, что большинство уязвимостей в проектах на yii2, да и на других framework-ах это кривость разработчиков этих проектов, а не самого framework-а.
    Ответ написан
    1 комментарий
  • Python Django junior?

    @svetlov97
    Сделай себе портфолио. Придумай себе что-нибудь интересное, реализуй это, выстави исходники на GitHab, и покажи свой код на собеседовании. Даже если ты не подойдешь, собеседование ты в любом случае не у уборщицы проходить будешь, а у программиста, спросишь что ты должен знать чтобы попасть на работу. В принципе смотря как себя покажешь на собеседовании, возможно тебя возьмут и обучат.
    Ответ написан
    1 комментарий
  • Как освоить магию url в Django?

    Получив запрос на ссылку /post_list/, url matcher проходит по всем шаблонам в urls.py по очереди. Первй, который подходит - это:

    url(r'', include('blog.urls')),

    Поскольку регулярное выражение пустое, то Django берёт весь ваш URL и начинает искать его в blogs.urls, находя:

    url(r'^$', views.index, name='index'),

    Вам нужно как минимум ссылку на index убрать из blogs/urls.py в projectname/urls.py.
    Ответ написан
    1 комментарий
  • Как освоить магию url в Django?

    @AlexandrBirukov
    urlpatterns = [
        url(r'^admin/', include(admin.site.urls)),
        url(r'', include('blog.urls')),
        url(r'^post_list/', include('blog.urls')),
    ]

    вот тут url(r'^post_list/', include('blog.urls')) убираем, смысла подключать два раза одно и тоже нет

    urlpatterns = [
        url(r'^$', views.index, name='index'),
        url(r'^$', views.post_list, name='post_list'),
    ]

    а тут второй урл делаем уникальным, вообще ищется первое совпадение, остальные игнорятся
    Ответ написан
    1 комментарий
  • Django. Как защитить форму от множественной отправки?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    class FloodSafeMixin(object):
        def __init__(self, *args, **kwargs):
            request = kwargs.pop('request', None)
            if request:
                self._user = request.user.username if request.user.is_authenticated() else None
                self._ip = get_ip(request)
                self._period = OrderedDict()
                self._period['days'] = kwargs.pop('days', None)
                self._period['hours'] = kwargs.pop('hours', None)
                self._period['minutes'] = kwargs.pop('minutes', None)
                self._period['seconds'] = kwargs.pop('seconds', None)
                self._period['milliseconds'] = kwargs.pop('milliseconds', None)
                if not any(self._period.values()):
                    self._period = {'minutes': 1}
                else:
                    self._period = OrderedDict([(k, v) for k, v in self._period.items() if v])
            else:
                self._ip = None
            super(FloodSafeMixin, self).__init__(*args, **kwargs)
    
    
        def clean(self):
            cleaned_data = super(FloodSafeMixin, self).clean()
            sender_id = hashlib.md5((self._user if self._user else self._ip).encode('utf-8')).hexdigest()
            if sender_id:
                class_name = self.__class__.__name__
                cache_name = 'last-submit.{0}.{1}'.format(class_name, sender_id)
    
                now = datetime.now()
                last_submit = cache.get(cache_name, now - timedelta(days=1))
                if (now - last_submit) < timedelta(**self._period):
                    cache.set(cache_name, now)
                    period = ' '.join([u'{0} {1}'.format(v, _p('genitive', k)) for k, v in self._period.items()])
                    raise forms.ValidationError(_('Form submitted less than %(period)s ago'), code='flood',
                        params={'period': period})
                else:
                    if not self.errors:
                        cache.set(cache_name, now)
            return cleaned_data
    
    
    class FeedbackForm(FloodSafeMixin, forms.Form):
        ...
    
    
    class SomeFormHandlerView(FormView):
        def get_form_kwargs(self):
            kwargs = super(GenericFormHandlerView, self).get_form_kwargs()
            kwargs['request'] = self.request
            kwargs['minutes'] = 2
            return kwargs
        ...
    Ответ написан
    Комментировать
  • Как добраться до базы данных?

    bogdan_uman
    @bogdan_uman
    шлЫмазл неукЪ-поцЪ
    Ну как-бы рельсы не запускают сервер для БД, а только конектятся, настройки которые делаются с файле "config/database.yml". В SQlite нету сервера, вот что пишет вики
    то есть движок SQLite не является отдельно работающим процессом, с которым взаимодействует программа, а предоставляет библиотеку, с которой программа компонуется, и движок становится составной частью программы.
    Ответ написан
    Комментировать
  • Как добраться до базы данных?

    HighQuality
    @HighQuality
    ☁ Ниндзя девелопер
    Тут нужно разобраться не в Ruby/ROR, а в том как устроена и работает SQLite база - точно так же она может работать и для yii2, если верно настроить приложение.

    Базу sqlite не нужно поднимать, демонов на сервере нет (хотя кто их знает..).
    Ответ написан
    Комментировать
  • Как обновить изображения в Yii2?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    В одном аттрибуте должно содержаться имя файла в другом сам файл.
    Допустим в базе у Вас 'imagename', на него вешаем валидатор string
    добавляем в модель другой атрибут public $file; вешаем на него валидатор image и его используем в форме, а 'imagename' дергаем только если есть что-то в $_FiLES
    видео урок: загрузка фото в yii2
    Ответ написан
    1 комментарий
  • Где найти вариант тех. поддержки с возможностью обсуждения и предложений на сайт?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    оторый позволяет получить власть над соц сетями

    CH2i8hWUsAAUoDL.jpg
    Сервер сам написан на yii2

    CH2i8hWUsAAUoDL.jpg

    Я так понимаю нужно что-то типа:
    reformal.ru
    Хотя хз. Стоит ли что-то советовать человеку, который написал на yii сервер и подчинил соц сети.
    Ответ написан
    Комментировать
  • Где взять дизайны (.psd) для практики верстки?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    с псд любой дурак может, с пережатого жпега попробуй, вот где скилл )
    Ответ написан
    7 комментариев
  • Советы начинающему рубисту по предюниоровскому трудоустройству, на что обратить внимание?

    @mamayama
    по предюниоровскому трудоустройству


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


    И не надейтесь.
    Ни к чему такому интересному даже джуна не сразу подпускают.
    Ответ написан
    Комментировать
  • Trailblazer gem Как использовать если форма состоит не из одной модели?

    @ksim_miloff
    1.1 Для работы с формами в trailblaizer есть reform, который через Composition позволяет внутри себя описать объект-форму сразу для нескольких моделей. Потом этот объек-форму можно скормить рельсовому formbuilder'у.
    1.2 В чем проблема с передачей в cell больше одной модели?
    Some::Cell::Example.(nil, model1: model_instance1, model2: model_instance2).()

    или даже так:
    Some::Cell::Example.({model1: model_instance1, model2: model_instance2}).()

    В первом случае к данным будет доступ через options, во втором через model.
    2 Это не похоже на вопрос.
    3 Trailblazer не плохая штука, но на мой вкус слишком большая и магическая, мне не нравится как компоненты друг в друга проникают :), предпочитаю брать его частично, например только reform и cells, а вместо операций брать гем interactors. Кроме того сам разработчик trailblaizer'а не очень любит рельсы, неоднократно убеждался в этом читая его ответы на гитхабе, когда у rails-программистов возникают проблемы.
    Ответ написан
    Комментировать
  • Как отобразить список категорий и связаных товаров на одной странице?

    @AlexandrBirukov
    {% for category in categorys %}
    {{ category }}
    {% for book in category.category_book.all %}
    {{ book }}
    {% endfor %}
    {% endfor %}

    Это в шаблоне, а во вьюхе:

    model = Category
    context_object_name = 'categorys'
    Ответ написан
    1 комментарий
  • Как в tinymce убрать автоматическое добавление тега?

    NeiroNx
    @NeiroNx
    Программист
    stackoverflow.com/questions/22902625/remove-automa...
    var settings = {
    ...
    forced_root_block : '',
    ...
    };
    Ответ написан
    Комментировать
  • Как организовать хранение файлов на сервере?

    @marazmiki
    Укротитель питонов
    Правильно ли я понимаю что для хранение файлов их нужно разбивать по папкам,

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

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

    А на боевых серверах использование хранилища в локальной файловой системе и вовсе нонсенс. Там эта проблема не стоит в принципе.

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

    допустим на сервер пользователь с Ником username заливает файл file.mp4, и я сохраняю этот файл по пути u/us/use/user/usern/file.mp4 и такой путь формируется для каждого пользователя

    Опять неправильно.

    Во-первых, никогда, НИКОГДА не доверяйте данным, пришедшим от пользователя. Сохраняете загруженный файл – сгенерируйте имя сами. А оригинальное имя не возбраняется сохранить и в другом месте. Если понадобится дать возможность пользователю сохранить файл под оригинальным именем, это делается в несколько строк.

    Во-вторых, Ваша сегментация слишком агрессивная. Если представить, что юзернейм может состоять только из строчных латинских букв и цифр (итого алфавит 26+10=36 символов), то такое хранилище сможет вместить 36 ^ (1 + 2 + 3 + 4 + 5) = 36^15 = 2.21 * 10^23 файлов без повторений. А что если юзернейм короче 5 символов? А что если он переименуется?

    Помните "во-первых"? Так как нам нужно самим придумать имя файла, почему бы не воспользоваться либо UUID и сгенерировать уникальное (с высокой достоверностью) значение вида 28c5a6d8-f7b5-440f-aeaa-150e4fd0bebc, а его уже сегментировать? Например, два сегмента по два символа датут прикольные ссылки вида 28/c5/28c5a6d8-f7b5-440f-aeaa-150e4fd0bebc и возможность разместить 65 тысяч файлов так, чтобы они были по одной штуке в директории :)

    Есть также вариант использовать не UUID, а посчитать контрольную сумму файла и взять её в качестве имени. Практическая ценность такого хеша, правда, тоже стремится к нулю :)

    если будет 2 одинаковых названия файла у одного пользователя то просто добавляю к новому файлу номер (file1.mp4)

    Если речь идёт о Джанге, то она сама так делает, это штатная функция хранилища.
    Ответ написан
    1 комментарий
  • Можно ли задавать имена переменных в шаблоне Django на кириллице?

    sim3x
    @sim3x
    Не надо делать 1с на моей джанго
    Ответ написан
    Комментировать
  • Какой функционал необходимо сделать на yii2, чтобы работодателю было понятно, что я с ним знаком?

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

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

    Работодатель не будет смотреть весь функционал, что вы там на ваяете, мб обратит внимание на какие то интересные сложные моменты, показывающие Ваш скилл, но врядли. Код просят, чтобы посмотреть стиль оформления и наличие говнокода (лишние/не объявленные переменные например).

    Что написать? В основном это crm.
    Ответ написан
    1 комментарий
  • Как узнать установленные модули в Django и опубликовать проект?

    @AlexandrBirukov
    1.
    pip freeze - из под виртуалки покажет все пакеты.
    pip freeze > requirements.txt - сохранит список пакетов в файл, потом можно будет все установить на боевой сервак pip install -r requirements.txt
    2.
    я думаю вариантов переноса много, но в общем если это vps, то надо сначала настроить сам сервак, установить требуемые пакеты, перенести сам проект, поправить в нем как минимум settings.py, настроить статику - просто скопировать проект как есть в папку на сервере не получится.
    3.
    если это mysql, то переносить можно и через phpmyadmin, только может быть проблема при переносе крупной базы, тк есть ограничения в php по размеру загружаемого файла.

    busy-brain.ru/post/9 - тут все по шагам на русском)
    Ответ написан
    5 комментариев
  • Как лучше подключать библиотеки в Codeigniter?

    @egormmm
    Борітеся — поборете!
    1. Если часто используется какой-то компонент, подключайся его через автолоад. Так код будет чище и понятней. Те лишние мс на загрузку значения не имеют.

    2. Данные из post принимай через $this->input->posts('name'). Посмотри встроенную библиотеку input-.

    3. На предмет наличия файла view проверку не делай. Если файла нет страница ошибки выйдет сама.

    4. Header и footer лучше подключать во view файле, а не контроллере.

    5. Ну и собственно у тебя все в куче в модели. Все действия нужно разнести в отдельный методы. Или даже Объекты.
    Ответ написан
    2 комментария