• Что такое ElasticSearch?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Знаете, я с вами соглашусь, что хорошую вводную по Elastic трудно найти. Пока сам не переварил доков и не набил шишек многие элементарные понятия оставались для меня неясными. Поэтому вот моя вводная: Elastic можно использовать как NoSQL БД, только надо быть внимательным, т.к. всё-таки его основная задача поиск, а не удовлетворение функций БД. Например, если вы не настроили хранение исходных данных, а только индексацию, то свои данные вы уже не извлечёте из него. НИКОГДА. Только отдельные выражения, удовлетворяющие условиям поиска. Всё, тупик. Так же нельзя повторно индексировать уже загнанные в него данные. Т.е. перед загрузкой данных надо грамотно настроить индексацию, т.к. перестроить индекс, как это делается в реляционной БД невозможно. Нужно придумать новую схему индексации и перезалить данные в Elastic. Именно поэтому основное использование Elastic - как дополнение к существующей БД из которой данные можно перезалить по одному или полностью в Elastic (можно, конечно сделать схему Elastic->Elastic, но тоже есть нюансы).
    Ещё пару слов про схему. Это ЛОЖЬ, что в Elastic нет схемы данных. Она как раз есть и ооочень жёсткая. Жёсткая до того, что однажды определив, вы не сможете её поменять. Изначально Elastic оказывает медвежью услугу, разрешая вам дополнять схему по-умолчанию, но когда вы разберётесь с этой темой, то можете обнаружить, что Elastic "понастроил" такого у себя внутри, что остаётся только охреневать и переделывать всё явно, отказавшись от его "услуг" по автоматическому добавлению полей в схему.
    Так же в Elastic очень непросто строить сложные запросы на поиск и агрегатные запросы. Совершенно неинтуитивно. Но если освоитесь, то будет вам счастье. )))
    Несмотря за такие "страшные" вещи - Elastic классная система и по производительности агрегатных запросов не уступает платной версии MSSQL в поиске в многопроцессорных системах (проверял на одинаковых аппаратных конфигурациях с 16 ядрами). Так что если вам хочется большую скорость в агрегатных запросах и главное - это бесплатность, то берите и осваивайте Elastic. Мощности и возможности у него огромные. Но... нужно потратить приличные усилия на изучение.
    Ответ написан
    1 комментарий
  • Где найти удаленную работу для Android Junior?

    @o_f
    Веб-аналитик, SEO, контекстная реклама
    То, что разместили здесь свой вопрос с подробным описанием - молодец. Может кому и здесь нужен джуниор.
    Но про остальное скажу так: бейте, бейте и еще раз бейте во все двери, которые только видите перед собой. У вас сейчас не та ситуация, чтобы думать "стабильно/нестабильно". Размышлять, смаковать. Вам нужно "бежать" по жизни, залазить во все щели и пихать там свое резюме, рассказывать о себе.
    Апворк - да не надежно, да разговорный нужен часто, все равно бидьте и бидьте. Сделаете 20 первых левых заказов, потом нарветесь на постоянного заказчика, который вполне может вас прокормить. Так часто там бывает. У вас нет сейчас возможности выбирать!
    Далее hh - закидывайте письмами всех! Пробуйте разные варианты написания cover later.
    Ищите везде, в соц.сетях полно профильных групп, где часто размещают подобные вакансии удаленно.
    Я скажу так, когда искала работу удаленно по своему профилю, мне потребовалось ПОЛ ГОДА (пол года жизни без денег по сути, на оставшиеся какие были!) чтобы пошли заказы. ПОЛ ГОДА! Я каждый день с 8 утра до 10 вечера, а иногда и всю ночь раскидывала свои резюме, отписывалась в соц.сетях, искала, одновременно учила англ.; Так у меня опыта - 4 года в афигенной фирме крупного города на хорошей позиции.
    Последний пункт очень важен - учите уже сейчас разговорный. Дальше легче не будет. Времени, когда жизнь станет попроще -не настанет. Поверьте.
    И помните, что от начала поиска работы до первого заказа может пройти от полугода до года. И это нифига не много еще.
    Еще смотрите, в эту компанию www.epam-group.ru/careers/job-listings?sort=best_m... постоянно нужны новички. Компания оч хорошая, попадете туда и покажете себя - считай жизнь удалась.
    Там есть обучение, оно часто обязательно для джуниоров. Обязательно посмотрите, напишите туда. Вроде как вакансий и офиса в Мариуполе нет, но есть в др городах. Это очень хороший вариант, думаю, для вас.
    Ответ написан
    3 комментария
  • Математика для машинного обучения и нейронных сетей при школьной базе знаний?

    sgjurano
    @sgjurano
    Разработчик
    Программа:
    https://download.cdn.yandex.net/shad/shad_program_...

    В моём случае это выглядит примерно вот так:
    5efa13a2e5744a66a924206792e9e470.jpg

    PS: главное понимать, что познание - это процесс, если вам каких-то знаний не хватает, то их всегда можно наверстать, но это требует времени, и чем меньше вы знаете, тем больше времени требуется. Два года назад я знал математику на уровне 6 класса школы, сейчас учусь в ШАД на 2 курсе и читаю Deep Learning Book (хотя местами и приходится копаться в учебниках).

    PPS: при погружении в какую-нибудь область, первая прочитанная книга становится оглавлением к этой области знаний и углубляться дальше ты будешь уже базируясь на ней, поэтому книги накапливаются, далеко не всегда они читаются от корки до корки.
    Ответ написан
    14 комментариев
  • С чего начать обучение машинному обучению / deep learning / data mining?

    @SolidMinus
    Т. Сегаран - программируем коллективный разум. Там есть некоторые методы машинного обучения. Сама книжка смесь вэба и Data Mining. Python

    В этих двух книгах теория:

    Питер Норвиг. Искусственный интеллект: современный подход
    Книга П.С. Романов. Основы искусственного интеллекта

    Библиотека scikit-learn с реализованными алгоритмами из книг выше. Python

    Статья по ней на хабре: Введение в машинное обучение с помощью Python и Sc...

    А также пригодится ( на более поздних этапах )
    Козлов М.В., Прохоров А.В. Введение в математическую статистику. — М.: Изд-во МГУ, 1987.
    Боровков А.А. Математическая статистика. Оценка параметров, проверка гипотез. — М.: Наука, 1984
    Боровков А.А. Математическая статистика. Дополнительные главы. — М.: Наука, 1984.

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

    P.S. Я сам пока учусь, список от человека, который занимается AI уже давно
    Ответ написан
    Комментировать
  • Что такое такое rest api?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    API социальных сетей - это вполне типичные примеры реализации REST API.

    REST (RESTful) - это общие принципы организации взаимодействия приложения/сайта с сервером посредством протокола HTTP. Особенность REST в том, что сервер не запоминает состояние пользователя между запросами - в каждом запросе передаётся информация, идентифицирующая пользователя (например, token, полученный через OAuth-авторизацию) и все параметры, необходимые для выполнения операции.

    Всё взаимодействие с сервером сводится к 4 операциям (4 - это необходимый и достаточный минимум, в конкретной реализации типов операций может быть больше):
    1. получение данных с сервера (обычно в формате JSON, или XML)
    2. добавление новых данных на сервер
    3. модификация существующих данных на сервере
    4. удаление данных на сервере

    Операция получения данных не может приводить к изменению состояния сервера.

    Для каждого типа операции используется свой метод HTTP-запроса:
    1. получение - GET
    2. добавление - POST
    3. модификация - PUT
    4. удаление - DELETE

    Т.е. :

    GET-запрос /rest/users - получение информации о всех пользователях
    GET-запрос /rest/users/125 - получение информации о пользователе с id=125
    POST-запрос /rest/users - добавление нового пользователя
    PUT-запрос /rest/users/125 - изменение информации о пользователе с id=125
    DELETE-запрос /rest/users/125 - удаление пользователя с id=125
    Ответ написан
    20 комментариев
  • Какие технологии нужно знать для создания мессенджера?

    @Levhav
    Возьмусь за разработку проектов любой сложности.
    Я в своих проектах делаю так:
    Приложение пишем на cordova на html5 (сразу получается кросплатформеное)
    Сообщение доставляем по вебсокетам
    На сервере используем связку php+mysql для логики приложения и CppComet для доставки сообщений

    В итоге получается что требует всё это минимум работы и минимум знаний но на выходе будет web версия и мобильное приложение на обе платформы.

    Вот минимальный пример чата который можно за 15 минут закатать внутрь приложения на cordova.

    И быстродействие нормальное так как самая важная часть по доставке сообщений на C++ реализована, и в тоже время вы не тратите кучу своего времени на написание бизнес логики приложения на чём то сложнее чем javascript и php.
    Особенно такой подход хорошо идёт на фрилансе где не многие заказчики имеют бюджет на оплату нескольких месяцев работы для команды программистов которые будут писать нативные приложения под каждую из платформ.
    Ответ написан
    Комментировать
  • Что можно тянуть в одного на Java?

    @frozen_coder
    Java-developer
    Напишите файловый сервер с возможностью загрузки файлов через ftp-клиент, через web-морду, через SOAP ( или REST), через мобильную приложуху с аутентификацией, базой юзеров, также можно в базе хранить какую-нибудь метоинформацию о файле. Например, может быть такой маленький личный фотоальбом с подписями(блог-постами, комментами etc.), фотки из которого доступно скачать и залить повсякому. Попробуете всё.
    web и Java = Enterprise. Это приложения масштаба предприятия, т.е. они как-то автоматизируют его бизнес-процессы и документооборот, переносят его работу в web и электронный формат. Они также могут общаться с другими приложениями, системами. Отсюда пляшем. Вам нужно какое-то предприятие, у которого вся работа в оффлайн, всё плохо, бюрократия и ад. Придумайте сложный бизнес-процесс со сложными сущностями. Разный и изменяющийся во времени и пространстве уровень доступа. Интеграция с другими приложениями или гос.сервисами. Электронный банк, электронные платежи, электронная валюта. Наворотить можно много чего.
    Начните с малого - какой-нибудь справочник-реестр с функциями CRUD - создать, прочитать, редактировать, удалить запись. Далее прикрутите систему прав и ролей пользователей(не все могут создавать, редактировать и тем более удалять). Добавьте работу с файлами - скачать, загрузить, экспорт в pdf и exel. Продолжайте накручивать своё приложение функционалом - личка и чат, доска объявлений, имитация отношений начальник - подчиненный (тайм-менеджмент, таск-менеджмент, сбор отчетов каких-нибудь по работе), уведомления (в почту, в системе, м.б. попробовать с смс), напишите другую маленькую систему и заобщайте их между собой по SOAP или REST(например, другая система может читать из справочника и что-нибудь туда писать). Берите какое-нибудь гипотетическое предприятие (склад, магазин, автосервис, школа, больница, завод и т.д.) и представьте, что ему надо свой документооборот перевести в электронный вид и максимально автоматизировать бизнес-процессы.
    Из фреймворков - семейство Spring.
    Ответ написан
    6 комментариев
  • Почему новые папки не отображаются в android studio?

    @IceJOKER
    Web/Android developer
    Левый угол(где файлы проекта), думаю у вас там выбран режим отображения Android, нажмите и выберите Project , должно помочь
    Ответ написан
    7 комментариев
  • Java junior developer кратчайший путь с нуля до реальной работы?

    @Mikeismynick Автор вопроса
    2 месяца как работаю разработчиком ))) желаю всем дойти до своей цели, на любые вопросы с радостью отвечу.

    Перед прочтением поста прошу достать свой компас сейчас мы будем его настраивать или же решим что он все таки показывает в отличную от программирования сторону, дело в том что люди которые читают подобные статьи находятся в смятении, и прочитав очередную саксес стори пытаются замотивировать себя идти в этом направлении, это все понятно - я писал этот пост именно для вас, выше вы найдете предисторию чтобы все это “примерить на себя”, чего таить и я в свое время делал точно также, причем я больше мотивировал себя чем шел к цели.
    Будучи разработчиком сейчас я вполне отдаю себе отчет что мог им и не стать, да у меня была цель, да были мотиваторы, но реально почти до самого конца я вел себя так как будто не хотел этого - чуть что давал слабину, расслаблялся и чуть-ли не забрасывал все это дело, года 2 я просто думал что выучу все сам и по факту вообще ничего не делал, уже будучи на курсах я держался в хвосте из - за чего постоянно был в авральном режим и чуть догонял костяк как тут-же сбавлял темп и отставал, вообще процесс обучения этому занятию переодически очень сильно вымораживает и тот самый фильтр который многие не проходят, я могу посоветовать тебе читатель иметь свою философию и подход к этому занятию, в итоге у тебя все равно все “поднимется” и “победится", советую читать и перечитывать tutorials.jenkov.com/software-as-career/learning-i... с правильным мировозрением все это преодолевается намного легче.
    Внимание! Если вы хотите стать разработчиком, то уже сегодня примените весь ресурс что у вас есть. Хотите попробовать сами выучить все ? Вперед! но общайтесь активно с комьюнити, ходите на конференции, и пишите код, много кода, и главное пишите его правильно, посмотрите как устроены небольшие опенсорс проекты, почитайте про трехслоную архитектуру и дерзайте! Не получается ? или вы видите что темп черепаший, а уже начинает надоедать и руки опускаются ? ОК! все к этому приходят, вам нужен турбоБуст а это ментор или курсы.

    Если Вы говорите себе что у вас нет денег то блин ребята это песня - займите, заработайте,
    украдите - это вообще не проблема, когда вы устроитесь разработчиком Вам будут платить деньги и не маленьикие, все это окупится с полна. Если через пол года самообучения Вы выгялдите на собеседовании как полный идиот, то нужно срочно что то менять!

    Ну если, вы и дальше ищите статьи и варианты выучить джаву за 21 день то просто перестаньте тратить свое время, это не ваше, увы и АХ!

    Как это было - много писать не буду (а получилось в итоге много И ДАЖЕ ОЧЕНЬ), могу посоветовать статьи Стаса Лазенко на dou.com, там расписан путь (на ближайший 1 - 1.5 года), не нужно учить все что там есть от корки до корки, но в конце у вас должно быть свое приложение в моем случае это https://bitbucket.org/Mikeismynick/phonebook, там написаны инструменты которыми я пользовался, все что там перечислено это технологии которые активно используются в современной веб разработке, если и не придется работать с ними в итоге то знать о них и пощупать надо, и да там не весь список технолгий которые нужно изучать, вот то что я указывал в резюме,

    Классические алгоритмы и структуры данных Java SE 7 ООП IO Collections Multithreading Concurrency Utilities JDBC JPA Hibernate(ниже написал что именно) Servlet JSP Spring Framework (IoC Container, JDBC, ORM, MVC) JavaScript jQuery Ajax JSON Twitter Bootstrap XML (DOM, SAX, StAX) JUnit Mockito IntelliJIDEA Git/Bitbucket Maven Tomcat MySQL

    по хибернейту - нужно уметь поставить на проект, знать где конф файлы и как их настраивать, список аннотаций которые должны быть в проекте изложен в первый 7 - 8 главах референса, на проекте должны быть таблицы находящиеся в отношениях manyToOne oneToOne, manyToMany соответственно хибер должен все это покрывать, неплохо поработать через jdbc для начала чтобы понять а зачем вообще нужен хибер.

    Приложение писалось 2 месяца (и не чисто писалось а с пробой технологий и перепиской на более современные с целью глубже понять как это современное работает под копотом и зачем оно в общем то нужно если и без него тоже можно написать рабочий вариант). Сразу скажу если хотите доучиться используйте весь доступный вам ресурс, не пускайте все на самотек со словами вот ща немного посижу и потом немного, вы просто потратите время, наймите ментора или идите на курсы в группу, самостоятельно учится конечно можно, но почти наверняка вы перегорите т.к. темп будет черепаший и вам будет казатся что вы этим плотно занимаетесь, а смысл в том что плотно это когда тебе снится java )) ( но вы в общем то и будете 90% времени учится самостоятельно даже на курсах и у ментора, т.к. программирование иначе никак не выучить).

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

    Я лично учился в группе getJavaJob (собственно мне это здесь и посоветовали, поклон ребят !!), чистыми учился около 6-7 месяцев, работал очень плотно, 3-4 часа в день минимум, конечно не всегда так получалось но и в выхи и в праздники я тоже учился так что назвал средние цифры. ну и у всех голова и бэкграйнд разный, считаю что быстро схватывал, но отсутствие бэкграунда и посредственный англ очень тормозили меня. На курсы пришел прочитав 150 стр. из "полного руководства" Шилдта.

    Что до конкретных курсов то очень рекомендую попробовать, курс поделен на 2 части, первая длится 2 месяца и там учат java se (алгоритмы, структуры данных) паралельно прививают правильный стиль программирования и учат работать с инструментами разработки (idea, git, debugger). Ну и организатор курсов суров, если начинаешь тупить и отставать то он быстро тебя подрежет и ты престыженный будешь дальше пилить, пилить ))

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

    Кстати в slack сидит русскоязычное комьюнити канал называется 3monthjunior, заточенное как понятно из названия на подъем до джуна и трудоустройство ))) чуть не забыл, мега важно иметь людей которые буду подсказывать и толкать вперед
    Ответ написан
    3 комментария
  • Как инициализировать maven в проекте?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Правой клавишей по проекту, выбрать пункт Add framework support, выбрать Maven. Будет создан pom.xml. Открываете его в редакторе, нажимаете Alt+Insert, выбираете пункт Dependency, добавляете из списка нужные.
    Ответ написан
    1 комментарий
  • Как решить задачу?

    @pixik
    59 секунд.
    1 программа:
    t =
    0) 1
    1) 1 + 1 = 2
    2) 2 + 2 = 4
    3) 8
    f1(t) = 2 ^ n -- функция роста количества программ
    2 программы
    t =
    0) 1 + 1 = 2 (изначально положили 2 программы в 0 момент времени)
    1) 2 + 2 = 4
    2) 4 + 4 = 8

    f2(t) = 2 ^ (t + 1)
    нужно сравнить: f1(60) = f2(n)
    2 ^ 60 = 2 ^ (t + 1) => n = 59 (59 секунд потребуется с 2мя программами)
    Ответ написан
    Комментировать
  • Зачем использовать в качестве типа переменной интерфейс?

    Пример: List -> ArrayList, LinkedList

    Если тебе нужна просто коллекция с методами, описанными в интерфейсе, и не важна реализация этой коллекции, то нужно использовать в качестве типа переменной интерфейс List. Это сбережет время и нервы в будущем, если придется поменять реализацию с ArrayList на LinkedList - не придется менять по всей программе ArrayList на LinkedList и можешь быть уверенным, что программа продолжит работать корректно.
    Если нужны специфические методы конкретной реализации, то нужно использовать ее.
    Ответ написан
    Комментировать
  • Зачем использовать в качестве типа переменной интерфейс?

    Stasgar
    @Stasgar
    Обученная макака
    Почитайте про инъекцию зависимостей.

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

    А суть паттернов в двух словах - свести к минимуму кол-во изменений существующего кода при добавлении новой функциональности.

    Еще про SOLID принципы почитайте, тоже будет полезно.
    Ответ написан
    Комментировать