• Как вы относитесь к возможности сортировки вопросов Тостера по степени их сложности?

    @olololosh
    что значит "много тупых вопросов"? Вы все такие умные? Если человек что-то спрашивает, то значит, что по каким-то причинам он не может самостоятельно ответить на этот вопрос в данный момент. Я тоже уже задал огромное количество "тупых вопросов", где в ответах было много шлака. Но один пользователь мне всегда помогал. Достаточно было всего одного его комментария, что бы я отметил вопрос как решенный. Я, к примеру, задаю "тупой вопрос", и параллельно гуглю. И это может для 40-ка летнего лысого программиста задрота со стажем 15 лет этот вопрос "тупой", но для меня он важный, иначе зачем его задавать? Просто не смотри "тупые вопросы", если ты такой "умный".Не надо ничего решать с "тупыми вопросами", а если что просто ответь на него и на 1 тупой вопрос будет меньше...
    Ответ написан
    5 комментариев
  • Как вы относитесь к возможности сортировки вопросов Тостера по степени их сложности?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Может, сделать без негатива ровно наоборот? Помечать вопрос как сложный или интересный. Популярные автоматически определять по количеству подписчиков и ответов как это уже сделано.
    И фильтрация будет, и оскорблений меньше. И так уже в рунете градус хамства и говнометания зашкаливает.
    Ответ написан
    27 комментариев
  • Как продвинуть отзыв на 1е место/страницу в Google Play?

    @MarkusD
    все время мелю чепуху :)
    В Google Play отзывы сортируются. Внимательнее погляди на панельку просмотра отзывов. По умолчанию они сортируются по их полезности. Стало быть, как вкопанный на первом месте стоит именно самый полезный отзыв.
    Вопрос в том, как этот отзыв сделать самым непревзойденно полезным. Ответ тоже прост.
    1. Существуют специализирующиеся на продвижении товаров компании. Суть работы такой компании сводится к тому, чтобы привлекать в свои ряды любителей халявы. Халявщику дают задание продвинуть своим голосом тот или иной товар. Халявщик за свое действие получает монетку в долларах или рублях. Зависит от компании.
    2. Существуют компании, в ведении которых находятся реальные бот-сети - тысячи и миллионы зараженных вирусом/трояном пользовательских хостов. Бот-сеть способна безупречно продвинуть любой товар на любую позицию.


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

    Очень много текущих топовых товаров на GP/AppStore продвинуты с использованием одного или обоих способов. При чем, изначально такие услуги оказывались только в отношении магазина Apple. И лишь сравнительно недавно раковая опухоль перекинулась на Android.
    Ответ написан
    1 комментарий
  • Как отписаться от события, если в качестве подписки лямбда выражение?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Проще всего запомнить ссылку и не извращаться:
    // создаем переменную типа EventHandler
    EventHandler handler = null;
    // создаем анонимный метод для обработки события и передаем его переменной
    handler = (sender, e) =>
    {
      MessageBox.Show("Hello!");
      // удаляем обработчик
      ((Button)sender).Click -= handler;
    };
    // добавляем обработчик
    button1.Click += handler;

    Плохое решение может выглядеть так:
    // добавляем обработчик
    button1.Click += (sender, e) =>
    {
      MessageBox.Show("Hello!");
    
      // получаем поле EventClick
      var f = typeof(Control).GetField
      (
        "EventClick", 
        BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static
      );
    
      // получаем значение EventClick для sender
      var k = f.GetValue(sender);
    
      // получаем свойство 
      var p = sender.GetType().GetProperty
      (
        "Events", BindingFlags.NonPublic | BindingFlags.Instance
      );
    
      // получаем значение свойства Events для sender
      var events = (EventHandlerList)p.GetValue(sender, null);
    
      // удаляем обработчик из списка событий
      events.RemoveHandler(k, events[k]);
    };

    В собственных классах проще получить список делегатов при помощи GetInvocationList (внутри класса):
    public class Toster
    {
    
      public event EventHandler AnyEvent;
    
      public void AnyEventHarakiri()
      {
        foreach (Delegate d in this.AnyEvent.GetInvocationList())
        {
          this.AnyEvent -= (EventHandler)d;
        }
      }
    
    }

    var t = new Toster();
    t.AnyEvent += (sender, e) => { };
    t.AnyEventHarakiri();

    Но вариант со ссылками лучше.
    Ответ написан
    3 комментария
  • Как отписаться от события, если в качестве подписки лямбда выражение?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Храните ссылку на анонимный метод.
    public delegate void TestEventHandler(object sender, object e);
    public event TestEventHandler TestEvent;
    
    TestEventHandler test = null;
    test = (sender, e) => { TestEvent -= test; };
    TestEvent += test;
    Ответ написан
    3 комментария
  • Как прeодолеть зону комфорта, стать фрилансером не обанкротившись?

    kumaxim
    @kumaxim
    Web-программист
    Для начал ответь сам себе на вопрос "А чем тебе неудобна текущая золотая клетка"? Можешь не писать здесь, но определись для себя.

    Далее нужно осознать, что фриланс - это подвид бизнеса. Есть книжка Р.Киосаки "Квадрант денежного потока". Там всех людей, работающих в экономике разделяют на 4 части:
    1. Р - наемные работники
    2. П - предприниматели
    3. Б - бизнес
    4. И - инвесторы

    Фриланс - это сегмент П. Ты работаешь один, возможно зарабатываешь больше чем работая по найму, но вот ты заболел, продуло тебя где-то, температура 38.5.... Сомневаюсь что ты из стали сделан и сможешь в таком состоянии писать код.
    Сегмент П очень хорошо охарактеризовал г-н Залогин из Локус Медиа. Он сказал примерно так: "Вы человек-велосипед - пока крутите педали - едите, как только перестали - упали"

    Переходя к твоему вопросу о выходе из зоны комфорта.
    Первое что рекомендую перед началом своего бизнеса - оплати все долги. Закрой ипотеку, погаси автокредит, все потребительские заемы и т.д. В случае если ты провалишься(первый блин, обычно, комом) по крайней мере ты со своей семьей не под мостом окажешься.
    Второе - содержание семьи. Никакие твои заработки не должны влиять на твою жену/ребенка. Твои родные, как минимум, должны иметь крышу над головой + еду на столе. Посчитай сколько ты платишь за комуналку + еду. Далее умножаешь эту сумму на 24 месяца. Это финансовая подушка твоей семьи.
    Третье - планирование. Бизнес без бизнес-плана - это не более чем хобби. С 16 лет стремился зарабатывать в сети. Продавал ссылки на sape.ru в 2008-2009, работал с трафиком в 2010-2012, продавал китайские безделушки с 2013-2014... Сейчас ушел в разработку одного SaaS-решения. Первые пару месяцев оптимизм из ушей хлещет, думаешь "Да все будет, да это фигня, преодалею...." Но вот начинаются черные полосы: ТИЦ сайта в планируемый апдейт не вырос до нужного значения, твой сайт на 9 месте в выдаче, вместо требуемой тебе 3-4 позиции, товар из Китая на таможне завис.... Да я могу до бесконечности перечислять проблемы, которые возникали у меня... А время - деньги: тебе нужно платить аренду, зарплату, рекламу, кредиты и т.д. Не платишь - начинается ругань, из Максима Александровича я сразу превращаюсь в мошенника, кидалу, сволочь... эх, во общем суть ты понял. Думай на 2 шага вперед, вот что я хочу сказать
    Четверное - не делай бизнес с полного нуля. Перт Осипов(проект Бизнес Молодость) в каком-то из видео говорил, что мы не ценим самое ценное что у нас есть, мы воспринимаем это как должное, когда для других людей это может быть сравни бриллианту среди кучи стекляшек. Вы не первый день работайте в ИТ по какой-то специализации, так ведите эту специализацию и дальше. Занимайтесь своим любимым делом.
    Пятое - не пытайтесь все делать сами. Когда я запустил свой самый первый интернет-магазин по Китайским безделушкам я все делал сам: рисовал дизайн, верстал его, настраивал рекламу, обзванивал клиентов, носил товар на почту.... В общем занимался вообще всем! Причем за всей этой рутиной я не видел, что мой сайт работает не эффективно, я упускаю из виду 20% горячих клиентов, 10% моих бандеролей исчезают в глубинах Почты России... Вы как первое лицо компании должны знать все процессы своего предприятия, иначе Вы не сможете им управлять, но Вам не нужно все процессы делать самому. Отдайте часть на аутсорс или делегируйте наемному сотруднику.
    Шестое - я на этом очень сильно обжегся около 3-х лет назад.... Ставьте своим сотрудникам четко достижимые KPI(ключевые показатели эффективности). Например, есть у меня форма заказ обратного звонка на сайте. Человек пишет туда своего Имя и номер телефона, после чего эти данные попадают в CRM. Для менеджеров, которые у меня обрабатывают вызовы клиентов один из KPI звучит так: перезвонить клиенту в течении 15 минут после поступления от него заявки, если она поступила в рабочее время. Причем все KPI Вы должны сформулировать максимально точно и подробно. Я сам с KPI работаю так: есть у человека базовый оклад и базовый набор KPI, которые ему необходимо выполнять. Если он их выполняет - получает оклад, выполняет лучше - получает оклад + премию. Причем оклад у меня сам небольшой, около 6 т.р., но нижняя з/п у меня примерно в 2,5 раза выше.

    Первые 4 пункта - это как мягко выйти, вторые два - как не свалиться.

    В целом о бизнесе в РФ могу сказать что его делать относительно легко. Достаточно просто делать что-то хорошо и по человечески относится к своим клиентам. Примерно за 1 год Вы нарабатываете определенную базу контактов(поставщики/партнеры/клиенты), которые Вас знают и доверяют Вам. А далее главное все это не растерять.

    Вам могут все Ваши родные/коллеги/друзья говорить "Да ты что, сейчас санкции, налоги, коррупция..." Поверьте, все это херня! Под прессом можно работать и зарабатывать, причем когда его снимут - Вы получите взрывной рост. А все эти отговорки про санкции, коррупцию, высокие налоги... Да просто у кого-то очко играет!
    Ответ написан
    14 комментариев
  • Как прeодолеть зону комфорта, стать фрилансером не обанкротившись?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    С учетом нынешнего курса - 3k евро в месяц на руки - это отличные деньги для не руководящей должности и очень неплохие для руководящей.
    Даже если на фрилансе получится зарабатывать сопоставимые деньги - геморроя будет в разы больше.
    Есть вариант работы по рекомендациям за большие деньги - но к этому надо целенаправленно идти, и опять же никакой стабильности.

    Уход в свой бизнес кажется мне более интересным в финансовом смысле - но потребует от Вас совершенно других навыков и полного изменения жизни.
    Ответ написан
    2 комментария
  • Как прeодолеть зону комфорта, стать фрилансером не обанкротившись?

    @serglikesmetal
    Кофаундер музыкального журнала, PRщик,бармен
    Совет на основе личного опыта.
    1) Начать работать удаленно над краткосрочным (до 3мес) проектом, совмещая его с основной работой. Над удаленным проектом работать качество, принося в жертву личное время какое-то время. По окончании сотрудничества с удаленным работодателем заручится его рекомендациями.

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

    Если не получилось, повторить пункт 1) и продолжать нарабатывать опыт фриланса, расширять список знакомств в сфере, получать известность в области вашей специальности через сарафанку.

    Через какое-то время наработаете базу заказчиков, скилл удаленного сотрудничества, респекты, известность и сможете переключиться на фриланс без ущерба по $. Удачи
    Ответ написан
    5 комментариев
  • Как прeодолеть зону комфорта, стать фрилансером не обанкротившись?

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

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

    И да, имхо: фриланс для проф. развития не подходит. Стремительное развитие возможно только в перспективной компании, создающей для этого условия. А фриланс - место для реализации уже имеющихся навыков.
    Ответ написан
    2 комментария
  • Есть ли основные правила супер оптимизации?

    ErmIg
    @ErmIg
    Программист
    Есть развернутый ответ для С++ кода, но его можно обобщить и на другие языки и платформы:

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

    1) Важно понимать, что алгоритмическая оптимизация практически всегда может дать лучший эффект, чем программная. Так, если алгоритм имеет сложность O(n^2), то на больших исходных данных он при любой оптимизации будет медленнее, чем неоптимизированный алгоритм сложности O(n). Впрочем, при выборе алгоритма, опираться только на его сложность не стоит: если объем исходных данных не велик, то вполне может оказаться, что алгоритм со сложностью O(n^2) будет работать быстрее, чем с O(n).
    2) Очень важно повторное использование (кеширование) промежуточных данных, вычисленных в программе – ибо быстрее всего выполняется работа, которую не надо делать. Тем не менее, не надо чрезмерно кешированием увлекаться – если объем кэшируемых данных слишком велик, то это может отрицательно сказаться на общей производительности программы (некоторые данные быстрее вычислять на лету, чем считывать из памяти).
    3) Следует избегать излишнего копирования данных (например, передавать сложные типы данных по ссылке, а не по значению).
    4) По возможности следует избегать условных операторов во вложенных циклах. Так как условные переходы, вызываемые такими операторами, плохо обрабатываются современными процессорами с конвейерной архитектурой.
    5) Данные в памяти, которые используются алгоритмами, должны по возможности лежать упорядочено, и использоваться последовательно. Это позволит процессору их эффективно кешировать. Важно помнить, что доступ к кэшу процессора значительнее быстрее, чем к оперативной памяти.
    6) Если алгоритмы это позволяют, то возможно стоит реализовать их параллельное исполнение (в отдельных потоках или процессах). Это позволит эффективно задействовать современные многоядерные процессы.
    7) В некоторых случаях (например обработка изображений) большого эффекта можно достичь применением специализированных расширений процессора (SSE, SSE2, AXX, AVX2 и другие). Стоит отметить, что большинство современных компиляторов (GCC, MSVS, ICC) поддерживают непосредственное использование данных расширений непосредственно из С++ кода при помощи специальных встроенных функций (intrinsics). Минусами такого подхода является потеря переносимости (впрочем, эта проблема решается наличием разных веток программы под разные процессоры) и значительное усложнение программы.
    8) Также большого эффекта можно достичь применением специализированных ускорителей, например GPU (технологии CUDA, OpenCL). Минусами таких решений являются потеря универсальности и значительное усложнение программы, а также то, что на специализированных ускорителях, как правило, хорошо работает далеко не каждый алгоритм.
    Ответ написан
    Комментировать
  • Реально ли попасть на github?

    kumaxim
    @kumaxim
    Web-программист
    Я не понимаю что Вы имеете ввиду под "пускают". Любой зарегистрированный участник GitHub может сделать форк репозитария, поправить исходники в своем форке и предложить внести его изменения в главный. Если автор главного фреймворка сочтет их необходимыми(к примеру они закрывают какой-то баг или добавляют функционал, который давно просят юзеры), то примет, в противном случае - нет. Все же просто :-)
    Ответ написан
    Комментировать
  • Поздний старт в ИТ - есть ли шансы?

    zo0m
    @zo0m
    full stack developer
    какой-то вы неуверенный слишком
    я собеседовал достаточно много студентов и возраст скорее играет на вас
    "Что делал? тебе столько лет, а где опыт?", конечно спросят, только не для того чтобы вас топить, а для того чтобы понять что за человек сидит.
    Если на собеседованиях будете хорошо отвечать -- у вас нет причин не попасть куда-угодно.

    псц, ПОЗДНИЙ СТАРТ в 26 ??? я видел взрослых мужиков за 40 полностью меняющих работу на IT, а вам 26...

    чувак иди проспись
    Ответ написан
    6 комментариев
  • Продавать игры на unity 3d free?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Достаточно бесплатной.
    Платная вам понадобится, когда вы достигнете дохода в $100,000.
    unity3d.com/unity/faq
    Ответ написан
    Комментировать
  • История программирования?

    opium
    @opium
    Просто люблю качественно работать
    Почти всех хороших программистов кого я знаю овладели этим навыком не зная её.
    Боюсь что вы приписываете магические свойства истории.
    Ответ написан
    Комментировать
  • Почему метод GetEnumerator() интерфейса IEnumerable реализовывается дважды?

    FirstX
    @FirstX
    .net developer
    Для ответа на этот вопрос надо окунуться в историю. А именно был момент, когда не было Generic-типизации и был только нетипизированный интерфейс перечисления IEnumerable. А потом с приходом новой версии .Net появились обобщения (это когда явно указывается тип <T>, в твоем случае тип данных <Product>).

    Сигнатура этого интерфейса выглядит следующим образом:
    public interface IEnumerable<out T> : IEnumerable

    То есть для обратной совместимости, новый интерфейс наследует старый, а значит и метода нужно реализовать два: один, который возвращает старый нетипизированный вариант, и новый, более удобный типизированный вариант.

    Для понимания: в старом варианте, когда ты обходил в цикле каждый элемент через foreach - тип элемента был object (все другие типы от него унаследованы). И на каждой итерации, чтобы получить свой тип Product и работать с ним - приходилось делать приведение типов.
    В новом варианте, благодаря тому, что явно указан тип <Product> при обходе в цикле - ты сразу получаешь объект типа Product.

    Рекомендую по этой теме почитать вообще изменения в .Net при переходах с версии на версию + почитать про Generic в дотнете.
    Ответ написан
    Комментировать
  • Ну что как теперь видите?

    paradokso
    @paradokso
    Начинающий фронт-эндер
    зрение садится от нескольких факторов:
    - неправильное/недостаточное освещение
    - плохая матрица монитора / неправильно выбранное разрешение
    - отсутствие нагрузки на глаза кроме пялинья в монитор (все знают что хоть разок в час необходимо хоть 5 минут отдыхать от монитора)
    - неправильная осанка
    - отсутствие нагрузок на организм, отчего тонус капиляров ухудшается
    - неправильное питание

    сам хоть и не совсем програмис, по догу учебы/службы, последние 5-6 лет ооочень много времени провожу за компьтером. Пока что, тьфу-тьфу, зрение выше единицы =)
    Ответ написан
    1 комментарий
  • Дети и интернет: как контролировать?

    @mnty
    Владимир написал уже все, о чем я подумал (жаль только, что поскромничал под спойлер), поэтому просто добавлю пять копеек из своего детства.

    Долго разглагольствовать не буду, просто скажу, что благодаря тому, что родители думали в ключе «как дать», а не «как ограничить», компьютер у меня появился одним из первых в классе, что впоследствии дало мне преимущество в несколько лет перед сверстниками. Разумеется, к тому моменту, когда компьютеры начали появляться и у других, я уже успел неоднократно поубивать винду95 удалением системных файлов, изучить все доступные детскому уму комбинации «домен.ком» и вдоволь насытиться играми. Позже, пока они еще игрались в чаты/айсикью/ультиму-онлайн/контр-страйк, я уже зарабатывал свои первые сто долларов, стряпая баннеры какому-то незнакомому парню, написавшему мне на имейл, с оплатой постфактум по вебмани, потому что за год до этого я выставил пару своих каракуль на каком-то тематическом форуме; и таки получив свои кровные на руки в местной бандитской бильярдной у дилера вебмани, который там отдыхал. Нет, мне, как и всем детям, все еще хотелось играться и все такое, просто мне повезло избежать состояния дорвался. У меня уже было свободное от детского досуга время на саморазвитие.

    Господи, спасибо родителям, что им не хватило ума меня тогда контролировать. И что о сексе я все узнал из порнушки, и ответы на все возникающие с каждым новым фильмом вопросы нашел до того, как пришлось применять знания на практике. Родителям просто некогда было мной заниматься. Они даже не знали как. Уверен, выпади мое детство на сегодняшний день, тоже бы наслушались от друзей-подруг про контроль и безопасность, и в паре с некомпетентностью в воспитании и отсутствием времени на своего ребенка черт знает что бы вырастили.

    Подытоживая эту маленькую зарисовку, хочется сказать, что лично я бы рекомендовал родителям самосовершенствоваться и учиться строить отношения со своими детьми, иметь ответы на все детские вопросы, быть интересным собеседником, самым сильным папой, самой нежной мамой, и тогда вопрос контроля отпадет сам по себе. Отношения строятся на доверии, а когда нет доверия, приходится прибегать к контролю.
    Ответ написан
    Комментировать
  • Как двигать объект по окружности, используя rigidbody?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Сначала тащите частицу к мышке, а когда она будет достаточно близко, тащите её по касательной нужной орбиты.
    var toMouse = mousePosition - rigidbody.position;
    if (toMouse.sqrMagnitude > sqrRadius)
    {
        rigidbody.AddForce(toMouse);
    }
    else
    {
        var velocity = rigidbody.velocity;
        Vector3.OrthoNormalize(ref toMouse, ref velocity);
        rigidbody.AddForce(velocity);
    }

    Vector3.OrthoNormalize даст вам направление касательной, возможно потребуется указать бинормаль.
    Ответ написан
    1 комментарий