• Куда ехать фрилансить, в какую страну?

    Подтролливают тебя немного =)

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

    Вот, например, забавный вариант: Казахстан/Астана. Молодой, современный город. В прошлом году прожил там 5 месяцев случайно, и, надо сказать, в восторге. Сам из СПб, сравниваю с ним.
    Страна мусульманская, но это заметно только тем, что синьки по улицам не шатается и гопотни во дворах не сидит. Ночью в любое время прогуляться приятно. Малышня без присмотра взрослых и мамы с колясками гуляют до 2 ночи. Люди сами по себе добрей, чем в СПб. У меня по возвращении был культурный шок. Неделю дома сидел - выходить не хотелось.
    Цены низкие на все. Питаться - практически бесплатно. Самый лучший шашлык в моей жизни попробовал именно там, в отличном ресторане, в который местные не ходят, т.к. дорого. Шашлык обошелся в 150 рублей.
    Транспорт - автобусы. Но за 5 месяцев я ездил на автобусе 1 раз. Потому что убер "бесплатный". Однажды довелось проехать весь город по диагонали на Порше Кайен за 100 рублей! Это убер икс, не блэк.
    Казашки очень красивые девушки и любят "фарангов" =)
    Климат/погода прекрасные. Один нюанс - нет демисезонов. Лето, а потом сразу снежок пошел =)
    Жилье - по разному. Я немного жировал и снимал огромную светлую новую квартиру в неплохом районе. По деньгам где-то 30к+ выходило. Интернет шикарнейший. Во время моего там прибывания проходила выставка Экспо 2017, поэтому цены были очень высокие. Выставка кончилась, должны были сильно упасть.
    В общем, на $1000 там можно жить очень комфортно. Заморочка одна - виза. Въезд без визы, на 1 месяц. Потом надо идти в миграционку с хозяином квартиры ( надо договориться с ним, чтоб сделал тебе гостевую визу ). Ее продляют до 3х месяцев ( то есть первый + еще 2 ). Потом по-любому бордер-ран нужен. Ну и по новой. Заморочек никаких.

    Тайланд ( сейчас тут как раз, уже 4 месяца ). На $1000 вполне можно жить. Все упирается в желаемый уровень комфорта и любовь к транжирству денег =) Паттайю не советую. Мое мнение - помойка полная. Куча прекрасных мест. В качестве бюджетного варианта посоветовал бы Краби попробовать. В Краби мало пляжей, делать особо нечего, но спокойно и дешево. Самое то, чтоб начать. И чтоб на байке научиться кататься - там движение хорошее, спокойное, дороги кайф. Домик можно снять тыщ за 8-9 бат неплохой ( в рублях, грубо, х2 ). Считай в 20к уложишься. Важно, чтоб с кухней. Тайская еда осточертеет, начнешь по дорогим рестикам ходить. Я вот в какой-то момент по 1-2к бат в день на хавку сливать начал =) Ужас. Байк на месяц 3к бат. Безнин дешевый, байк почти не ест. Похавать самому - зависит. Можно и в 100бт уложиться. Средняк для пацана, я бы сказал, 200-250бт, если с пивом ( в рестиках дороже в 2 раза, нежели в магазе ). Питаться дома дешевле, большие магазины есть, чтоб затариваться. В общем - на $1000 прожить вполне можно, если не загуливать особо. А вот загулять тебе может быть очень несложно. Тайку в постель заполучить тут сильно проще ( и дешевле ), чем в России симотную девку в кино с рестиком сводить без каких-либо дальнейших перспектив. Так что - самодисциплина прежде всего =)
    Если хочется чего-то пошумней, чтоб движухи побольше - Пхукет или Самуи можно попробовать. Пхукет - дорогой с туристической стороны ( на западе острова ), а вот если поселиться в Равайе - можно тоже очень бюджетно. Есть хорошие кондоминиумы, где отличнейшие квартирки по 8-9к бат. Но действительно очень хорошие и с кухней. Самуи считается дорогим местом, но "места надо знать". Туристам простым жилье загоняют за большие деньги, зная места можно снять прекрасный дом за 10-15к бат. Дом! С кондеем, гигантским балконом, 2-3 комнатами и т.д. На Самуи тьма русских ( больше чем тайцев по ощущениям ), русские всех сортов - от быдо-нариков-бухариков, до семей с кучей детишек и т.д. Кому-то наличие соотечественников плюс, кому-то минус. Но в твоем случае может плюс - больше помощи, советов, поддержки и т.д. Не так сложно начинать бродяжничать будет =)

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

    @vashaaa
    Юх с горы
    Функция это такой автомат. Ну знаешь к примеру с газировкой или музыкой. Есть автоматы с газировкой , ты им денюжку (переменные ) они тебе газировку, это пример функции которая что то возвращает. Есть автоматы с музыкой , вроде ничего не возвращают но играют музыку. Это пример функции без возвращения, ты вызываешь эту функцию она что то делает но ничего тебе не возвращает. Ещё есть игровые автоматы, это как вызывать функцию которая нихрена не делает и нихрена не возвращает.
    Ответ написан
    4 комментария
  • Как разобраться в машинном обучении на питоне?

    LazyTalent
    @LazyTalent
    Data Engineer, Freelancer
    Если в кратце то:
    1. Дб корпус текстов с лейблами (например, позитивный твит, негативный твит)
    2. Удаляешь знаки препинаия
    3. Удаляешь стоп слова (предлоги и пр. не имеющее смысловой нагрузки)
    4. Делаешь стемминг
    5. Из каждого твита делаешь набор н-грамм
    6. Из н-грамм делаешь TF-IDF словарь
    7. Сплитишь полученный словарь на данные для обучения и данные для тестов
    8. Засовываешь все это в понравившийся алгоритм для МЛ, например, так:
    clf = RandomForestClassifier(n_jobs=-1)
    clf.fit(X_train, y_train)

    9. Сохраняешь полученную модель в пикл и потом уже используешь ее для текстов, которые необходимо классифицировать.
    predict = clf.predict(tfidf_predict.toarray())
    Ответ написан
    3 комментария
  • Объясните простыми словами как работает Redux?

    Laiff
    @Laiff
    Front-end developer
    Отличный мануал от самого Дани https://egghead.io/series/getting-started-with-redux
    Документация переведенная на русский https://github.com/rajdee/redux-in-russian там почти все есть.
    Есть еще приятная статья на хабре чисто по базовым принципам, но в некоторых местах не полная habrahabr.ru/post/269831
    Ответ написан
    3 комментария
  • Объясните простыми словами как работает Redux?

    У вас есть одно большое дерево, в котором хранится все состояние (state) приложения - это хранилище (store).
    Также у вас есть набор редьюсеров (которые скомбинированы в один общий rootReducer) - это функции, который принимают текущее состояние и действие и возвращают новое состояние:
    function someReducer(state = initialState, action) {
      // обычно выглядит как switch 
      // action - простой js-объект
      //              и обязательно имеет строковое поле type
      switch(action.type) {
        // обрабатываем действие с типом SOME_ACTION_NAME
        case 'SOME_ACTION_NAME':
          // берем какие-то данные из экшена и возвращаем новое состояние
          // при этом менять sate нельзя!
          // state.someProperty = action.newStateData <--- НЕТ!
          return { ...state, action.newStateData };
        // Если мы не обрабатываем действие - просто возвращаем старое состояние
        default:
          return state;
      }
    }


    Также есть экшен креаторы (actionCreators) - это функции, которые возвращают действие. затем это действие вещается в хранилище (диспатчится). Типичный пример:
    function someActionCreator(someArg) {
      return {
        type: 'SOME_ACTION_NAME',
        newStateData: someArg + 5, // <-- разная логика
      };
    }


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

    Если мы хотим получить доступ к состоянию в экшен креаторе - воспользуемся thunkMiddleware:
    import thunkMiddleware from 'redux-thunk';
    
    function createStore(initialState) {
      const reducer = combineReducers(reducers);
      const finalCreateStore = applyMiddleware(
        thunkMiddleware // <-- добавляем middleware
      )(defaultCreateStore);
      return finalCreateStore(reducer, initialState);
    }


    Теперь мы можем делать так:
    function someActionCreator(someArg) {
      return (dispatch, getState) => { // <-- возвращаем фукнцию, а не объект!
        const someState = getState().reducerName;
        return {
          type: 'SOME_ACTION_NAME',
          newStateData: someArg + someState, 
        };
      };
    }


    В общем схема выглядит так:

    actionCreator --action--> dispatch --action--> middleware --action--> store --action--> reducer --> newState


    Затем мы берем из react-redux метод connect, который подключает Ваш умный компонент к хранилищу:
    import { connect } from 'react-redux';
    import { bindActionCreators } from 'redux';
    
    class MyComponent extends Component {
      static propTypes = {
        someProp: PropTypes.string.isRequired,
        someFunc: PropTypes.func.isRequired,
      };
    }
    
    // Тут мы берем из глобального состояния необходимую нам часть
    // В ownProps - свойства компонента. Тут могут быть например свойства от роутера
    function mapStateToProps(state, ownProps) {
      return {
        someProp: state.someReducer,
      };
    }
    
    function mapActionsToProps(dispatch) {
      return bindActionCreators ({ // <-- биндим все на disptach для удобства
        someFunc: (someArg) => someActionCreator(someArg + 1),
      }, dispatch);
    }
    
    export default connect(
      mapStateToProps,
      mapActionsToProps
    )(MyComponent);
    Ответ написан
    3 комментария
  • Как оптимальным образом в Django проверить текст на наличие слов из базы?

    @marazmiki
    Укротитель питонов
    Если абстрагироваться от базы данных, то задача выглядит слегка проще. Считайте, что есть два множества: множество плохих слов и множество слов в тексте. Остаётся определить, пересекаются ли эти множества. Если пересекаются, то как минимум одно плохое слово есть :-)

    >>> a = { 1, 2, 3 }
    >>> b = { 2, 3, 4 }
    >>> c = { 5, 6 }
    >>>
    >>> a & b
    {2, 3}
    >>> a & c
    set()


    Теперь ближе к прикладной задаче. Поскольку множество "плохих слов" у нас хоть и хранится в БД (к слову, модели принято называть в единственном числе — BadWord — а не во множественном, как у Вас), но пока не происходят изменений, его можно считать статичным. Поэтому можно без зазрения совести брать это множество из кеша.

    # utils.py
    from django.core.cache import cache
    
    def get_bad_words():
        return cache.get('bad_words')


    и пересчитывать кеш при создании, редактировании или удалении записей из BadWords. Например, с помощью сигналов:

    # models.py
    def set_bad_words(**kwargs):
        from django.core.cache import cache
        cache.set('bad_words', {w.bword for w in BadWords.objects.all()})
    
    models.signals.post_save.connect(set_bad_words,  sender=BadWords)
    models.signals.post_delete.connect(set_bad_words, sender=BadWords)


    Теперь остаётся только преобразовать входящий текст в множество слов

    И пример использования:
    # utils.py
    
    def get_words_from_text(text_string):
        return set([w for w in text_string.lower().split()])


    и определять, есть ли плохие слова (т.е. пересекаются ли множества):

    # utils.py
    
    def has_bad_words(text_string):
        return bool(get_bad_words() & get_words_from_text(text_string))


    В общем, пространство для рефакторинга и улучшений ещё есть (неплохо бы вычистить из текста пунктуацию, стоп-слова, лишние пробелы, сигналы перенести в apps.py согласно новым правилам application loading, а то и вовсе выкинуть их), но идея, думаю, ясна.
    Ответ написан
    4 комментария
  • Как тестировать верстку?

    @soledar10
    html css3 js jquery
    1. Pixel perfect
    2. Валидность кода
    3. PageSpeed Insights
    4. GTmetrix
    5. Pingdom Website Speed Test
    6. Проверка адаптивности
    7. Проверка для Retina (srcset, svg, иконочные шрифты)
    Ответ написан
    3 комментария
  • Как сделать такой циркулирующий прогресс для слайдера?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    www.ruformat.ru/js/intro.js
    if (Modernizr.canvas) $slides.each(function(index){
    .............
    			    circ = Math.PI * 2,
    			    quart = Math.PI / 2,

    UPD: просто так
    UPD2 ( по просьбе semki096 ): www.cssscript.com/demo/animated-pie-progress-bar-w...
    Ответ написан
    2 комментария
  • React + Redux, как начать правильно?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Как с этим работать, чтобы не сойти с ума?

    Не торопиться, если хочется вдумчиво разобраться =)

    Первая проблема, как принять данные?

    Использовать react lifecycle hooks: в момент componentDidMount (или в componentWillMount) вызвать actionCreator (AC = создатель действия) -> в AC вы генерируете событие с типом REQUEST (которое ловит ваш редьюсер), а затем производите "ajax запрос", скажем так. В случае удачного результата - генерируете событие SUCCESS и ваш редьюсер устанавливает данные. Далее, ваш компонент формы, видит, что есть новые "props" (свойства, которые изменились в редьюсере, о которых компонент узнал, так как он приконекчен с помощью функции "connect" из библиотеки react-redux) и запускается перерендер. Вуаля, после такой кучи действий ваша форма "приняла данные".

    Конечно, если просто сделать нативный xhr запрос, кода будет гораздо меньше и все в одном файле, но это уже нужно исходить из ваших пожеланий. Если вам нужно, чтобы данные были "прогнаны" через редьюсер и оказались в store, значит "много действий". Если не нужно - просто обычный xhr запрос, либо если угодно $.ajax и установка данных в state компонента.

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


    Если используется redux, то цепочка следующая: на onChange селекта вызывается обработчик, то есть функция в вашем компоненте, которая вызывает AC (создатель действия, который располагается в папке actions). Далее уходит запрос на сервер. Затем с сервера приходит успешный ответ - вы генерируете событие, типа "DATA_RESPONSE_SUCCESS" и ваш редьюсер его "ловит". Итак, вы оказываетесь в третьем файле - в файле с редьюсером. Там вы манипулируете данными, так как вместе с типом события, вы так же должны были передать из action'а и данные, которые пришли с сервера. После того, как вы установите новые данные в редьюсере - начинается магия (которая заключается в том, что ваш компонент слушает изменения в объекте стора, с помощью функции connect). Ваш компонент перерендеривается и в инпуте оказываются нужные данные, так как инпут в качестве value использует, например: this.props.myNewValueFromServerAfterSelectManipulation (имя переменной, конечно, шуточное).

    Итого: вы потрогали файл компонента, файл из папки actions и файл из папки reducers.

    Супер итого:
    1) вам нужно понять, как сделать форму без redux. Как в ней с помощью this.state и методов жизненого цикла устанавливать и изменять данные в зависимости от того, что выбрал/ввел пользователь. Сделать это не сложно, если начать с туториала на официальной странице, либо заглянуть в РУ туториал здесь.

    2) вам нужно понять, почему в actions располагаются асинхронные запросы, и как при этом работает redux-thunk (а так же middlewares в общем). Почему в reducers производится только изменение данных. И самое главное, почему компонент при этом перерисовывается. Опять же, ссылки на официальные руководства уже дали. Русский перевод там не закончен, поэтому, хоть и устаревают версии библиотек, этот туториал по редуксу до сих пор актуален.

    P.S. в туториалах есть примеры с кодом
    Ответ написан
    3 комментария
  • Как развиваться начинающему web-разработчику?

    @toZavtra
    Принимаю заказы, пишите vasya@incream.org
    Послушай человека, у которого 4 года опыта управления веб-студией.

    Тебе нужно в первую очередь понять, где ты хочешь работать и только потом уже думать о технологиях и их прокачке. Когда ты узнаешь, где ты хочешь работать, над какими проектами, то узнаешь и какие технологии там используются. Потом устраивайся туда junior'ом и так вырастешь быстрее всего.
    Заодно, посмотришь, надо ли тебе оно и может тебе идти в другую область с другими технологиями.

    Помимо программистских советов есть еще чисто практичные и зачастую они решают, например, ты любишь делать законченный продукт или ковыряться в старом коде? Все эти басни и бредни про фреймворки, пойми, эти люди, которые до тебя писали код на твоей будущей работе, мозгами намного хуже тех же программистов, которые создали тот же Wordpress, зато они позволяют себе хаять его. Так вот ты придешь и будешь за таким человеком искать ЕГО баги 4-х летней давности. А представь, что баги эти от кривой архитектуры.

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

    Поэтому, в чем лучше кодить: в wordpress или в каком-нибудь symfony - это вопрос спорный, холиварный. Ни то ни другое не идеальное. Соответственно, какой стек технологий тебе учить, выбирать нужно отталкиваясь от того, чем хочешь заниматься. А учить стек лучше не на курсах, а идти джуниором.

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

    Потом, не забывай еще главное, мы живем в стране, где даже автомобиль нормальный сделать не могут, качество разработки здесь абсолютно такое же, то есть никакое, люди они одинаковые, что в АВТОВАЗЕ, что в Яндексе, поэтому на весь этот флёр вокруг каких-то там разработчиков клади болт.

    Я тебе расскажу, как это работает с точки зрения бизнеса в России, а не со стороны парняги в свитере и очёчках:
    1) Есть богатый дядя, который наворовал в своё время денег, у него есть сын, сын начитался хабра и бизнес молодости, взял у бати своего миллионов 50-100 и пошел пилить абсолютно никому не нужный стартап, нанял 30 человек, поставил компы, вот сюда нужно знать не столько сами технологии, сколько МОДНЫЕ технологии, смотришь модные тренды и их учишь или просишься джуниором, вауаля, и вот ты в струе.
    Делали делали, сыночке надоело пилить стартап, у него пати на мальдивах, свадьба, дети и тд - все разбежались.
    2) Есть государство или крупная контора, которая так или иначе, принадлежит кому-то из власть имущих, им нужно какой-то проект, они этот проект отдают фирме (то есть сыну, брату, свату), у которой сайт визитка. Эта фирма отдаёт это другой фирме, та отдает это еще двум-пяти фирмам. Где-то там в конце сидишь ты за компом и делаешь то, что тебе написали в ТЗ. Чтобы тебе что-то изменить в этом ТЗ, это должно пройти через 8 ртов и кучу согласований, и ты вообще лучше сиди и поменьше высовывайся. В таких конторах будешь пилить и пилить какую-нибудь хрень, в которой уже запутались все вокруг, но ты как-то делай, ведь скоро сдача. А потом они за два дня до сдачи, всей аравой посредников и программистов собираются в одном месте и наконец-то звонят главному заказчику и спрашивают, а как надо делать, то есть то, что ты спрашивал месяц назад. Иногда этот брейншторм помогает, иногда нет. Как туда устроиться? Опять таки, иди джуном.
    Примечательно, что качество продукта таких контор обычно хуже самой захудалой Джумлы, зато там все хаят CMS, но чтобы им в продукте прикрутить голосовалку, им нужно напрячь 8 ртов, распилить бюджет в тысяч 180-400, через кучу согласований сделать всё через жопу, но через ООП и какую-нибудь Symfony. Круто.
    3) Компании типа Яндекса, каких-нибудь банков. В таких компаниях обычно умные люди только на самом верху - это основатели компании, усмотреть за всеми аспектами фирмы им технически невозможно, поэтому часть продукта у них хорошая, основная, например, как поиск у гугла, а 90% других сервисов полное говно (посмотрите, что сделали эти "умы" из яндекса, вроде, с кинопоиском). Зато ЧСВ у каждого там Васи на уровне основателя компании. Вот эти Васи и делают там 90% продуктов, которые, как-бы второстепенны. Чтобы туда попасть надо не технологии учить, а изучать тренды какого-нибудь хабра, что там сейчас ценятся, какие авторы зарубежные: "Мега алгоритмическое программирование Алана Коуэла" и тд, таких книжек прочитать штук 10, выучить всё азы чистого программирования без фреймворков, одеться как мудак, чтобы выглядеть еще мудачее того гика, который тебя будет собеседовать, а то они ранимые и завистливые и опять таки, устроиться джуном.
    4) Компании локальные по созданию сайтов и прочего программирования. В таких фирмах свободы намного больше, чем в первых трёх, но нет столько денег, зато сразу видно продукт, который делаешь. Тут тебе пригодится и вордпресс и битрикс. Туда тоже лучше идти джуном. В таких компаниях шанс того, что ты потом запустишь боком собственный проект намного выше, т.к. у тебя будет опыт создания веб-сервисов, сайтов за Реальные сроки и ты будешь видеть ход их развития. Но с точки зрения денег, редкий случай, когда они тебе могут предложить даже столько, сколько в стартапе.
    Поэтому, если для души программировать, получать удовольствие, то варианты 1 и 4. Если хочется работы, от которой многие воют, то 2, 3.

    5) Есть еще компании, которые работают на запад, денег сейчас там в теории, может быть столько же, сколько и в стартапе у богатого буратино, там тебе сильно повезет, если будете делать пункт 4, если 2-3, то можешь брать веревку и мыло.
    Стартапы таким компаниям дают мало когда, ведь хипстеру миллионеру нужна атмосфера, нужны работнички перед глазами, а не на аутсорце. А вот латать баги в 6 летнем коде по цене продавщицы в ларьке Нью-Йорка - это запросто, это аутсорц. Текучка в таких местах дикая, поэтому они, отчаявшись, ищут негров за рубежом, никто вменяемый этим заниматься не хочет у них на родине. Поэтому если на аутсорце будет создание сайтов или каких-нибудь новых систем, это большая удача.
    Туда тоже нужно идти джуниором. Еще они почти всегда требуют английский, а если у тебя есть английский, зачем тебе они?

    6) Учишь английский, вордпресс, джумлу, магенто, цсс и идешь искать клиентов на английском языке. Из тебя вылупляется фрилансер, в перспектике открываешь собственную контору номер 5.

    Есть еще лайфхак, берешь абонемент в дорогой фитнес центр и знакомишься там с парнями, когда-нибудь тебе повезет и выйдешь на кого-нибудь богатого из чиновничков или олигаршьих родственников. Всем говори, что ты программист и у тебя есть "команда". Этого хватит, у богатых всегда "куча идей" куда бы просрать бабки (стартап) или наоборот где-то "намутить денег" (пункт 2). Они тебе сами предложат "тему", если ты обмолвишься, что ты программист. Всё, что у тебя будет к тому моменту, это сайт визитка, понимаешь к чему я клоню? Пункт 2, но ты будешь сверху, вторым ртом. Если повезет, будет и пункт 1, но ты будешь ко-фаундерем, ты посмотришь модные технологии и будешь под смузи составлять вакансии с reactJS, Angular, high load и еще кучу умных слов. А на биржах заказы пусть обычные люди ищут, которые за деревьями леса не видят. Или идут через жопу в пункт 2, когда надо заходить с другой стороны. Think different.
    Тот, кто на основании выше написанного лайфхака понял, что он ходил по кругу, а ключик в другом месте открывается, может мне скинуть денег за совет на кошелек R738086405346
    Точнее, это даже не совет, это инструкция, которая действительно рабочая.
    Ответ написан
    2 комментария
  • Как развиваться начинающему web-разработчику?

    Коротко
    Карта развития Web Разработчика

    Демагогия
    Не переживайте, не все сразу. Есть вещи до которых можно дойти только опытом и практикой. Это касается всех программистов в целом. Касательно веба, тут очень много упирается в то, каким именно специалистом вы хотите себя видеть в будущем. Есть фулстак - когда человек знает большую часть технологий их связку, но всегда будет ощущать недостаток тонкостей на хай левеле. В то же время специалист заточенный под определенные задачи будет лучше фулстака, но так же будет нуждаться в том же фулстаке, что бы объеденить.

    Живой пример: Есть толковый фронтендер(или бекендер по JS) пишет морду сайта на JS Фреймворке. Есть гуру бэкенда пишет API сайта. В случае с фулстаком(образно) он пишет обе задачи сам, но заведомо понятно, что он пишет это дольше и не факт что по последнему слову будет сделано.


    Что нужно для развития дальше:
    - Читайте блоги зарубежных программистов, они делают отличные архитектуры как в самом коде, так и решения в DB.
    - Фреймворки PHP и JS - чем больше их будет тем лучше. Все они ускоряют разработку. Все чаты, соц авторизации, регистрации,и прочие первоочередные задачи давно уже написаны. Вы можете концентрироваться на более важных задачах.
    - ООП тут очень спорный вопрос, на определенных этапах разработки оно решает, но когда этот уровень появляется, чаще всего прибегают к другому языку программирования и переписывают проект в угоду скорости (С++, Java, Python). Понимать нужно, поскольку фреймворки построены на этих парадигмах, но самостоятельно придумывать вам гибкие решения вряд ли придется(по крайней мере до Senior-а точно).
    - Не изобретайте велосипеды. Разбирайтесь в чужом коде(Этот навык очень ценен после "решить/найти решение любую задачу"). Любой магазин чаще всего будет написан в лучшем случае на фреймворке, в худшем на OpenCart, Woedpress - что просто идиотизм, это блоговая система БЛОГОВАЯ. из за тренда выкручивают яйца.
    - Учить английский и работать не на СНГ, Укр или места постсоветского пространства. Искать фирмы зарубежных филиалов и работать там. Поскольку так или иначе там уже работают профессионалы и знакомы с западным рынком, европейским. Там пишутся интересные проекты и появляются интересные решения.
    Ответ написан
    7 комментариев
  • Как правильно перенести проект с php на django (комплексный вопрос)?

    leahch
    @leahch
    3Д специалист. Долго, Дорого, Дерьмово.
    По поводу переноса контента.
    Тут достаточно просто и не нужно будет ручками переносить. Если есть возможность как-то добраться к самим стаьям и из выкачать хоть в каком-то формате все скопом, то всегда можно за день-два написать загружалку, благо в питоне это не так сложно, тем более у вас будет мапинг в вашим моделям.
    Парсите ваш файл (или лезете напрямую в базу данных), создаете объект модели и заполняете его и сохраняете, и так в цикле!
    Что касается редиректов, то наверняка и их тоже можно автоматизировать, создав для этого отдельную вьюшку.

    Ну а теперь по ворпросам
    1) Какой мощности нужен vps, чтобы держать проект на django с посещаемостью 3500 людей в сутки (40 хитов пик).

    В принципе подойдет любой. Нагрузка здесь совсем небольшая.
    2) Какая виртуализация лучше подходит для django: OpenVZ или XEN, и есть ли вообще значение?

    Тоже разницы особой нет. У меня вообще все на KVM.
    3) Я немного боюсь за то, что не смогу сделать нормально бекап через консоль. Стоит ли покупать ISPmanager lite для этого дела или это просто?

    Ну, этого опасаться не нужно, сможете. Вам ведь нужно будет бекапить базу данных, это делается всего одной командой, и бекапить загруженные файлы, для этого тоже одна команду всего нужна. А проект у вас и так весь есть.
    Ну и большинство хостеров предлагают бекапы на уровне всей виртуалки, пользуйте этот вариант.
    4) Я весь проект переносил через ftp-клиент обычным копированием файлом. Есть ли более лучший способ?

    Системы контроля версий mercurial/git + ssh/scp. А ftp уже давно не нужен! https://habrahabr.ru/post/113636/
    5) Адекватный ли вариант не занимать ресурсы сервера, и взять бизнес почту от mail.ru/yandex?

    Конечно адекватный, гораздо меньше проблем и с почтой и со спамом. При этом очень желательно развернуть свой локальный exim/postfix, который будет отправлять почту, прикидываясь доменом yandex. Для этого нужно немного все настроить DKMS + SPF. Ключи можно взять у самого яндекса на ваш почтовый домен. Это важно, если вы хотите много почты посылать.
    6) Есть ли какое-то различие в настройке http/https с django?

    Нет, тем более, что скорее всего это будет делать nginx или apache.
    Ответ написан
    Комментировать
  • Выучил базовые основы Python 3. Куда копать дальше?

    werevolff
    @werevolff
    Если для Web, то Django + Scrapy. На scrapy можно сразу начинать делать парсеры. Парсеры нужны очень часто, и можно сразу брать проект и делать. Для десктопа и кроссплатформенности - не знаю. Возможно, что Kivy.

    Да, чуть не забыл: Peewee. Можно и SQLAlchemy, но pewee выглядит очень изящно.
    Ответ написан
    5 комментариев
  • Что нужно освоить веб разработчику чтобы облегчить себе жизнь?

    tot0ro
    @tot0ro
    Front - end developer
    1. IDE
    2. xdebug
    3. git
    4. composer
    5.bower
    6.npm/bower
    6. less/stulys/sass
    7. grunt/gulp/webpack
    8. apache/nginx
    9. apc/opcache/memcache/varnish etc
    10. bootstrap
    11. VIM!!!!!!!!!
    12. English!!!!!!!!!!
    13. Все дырки через границу
    14. Умение не читать ИТ литературу русских программистов за исключением Макарова, Индутного
    15. Ненавидеть Попова
    Ответ написан
    40 комментариев