• Не видит что вписано в поле ввода, это можно как-то исправить?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    self.asdadfksslasdada
    Ответ написан
    Комментировать
  • Closure Vs Common Function pointer?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Если лямбда или анонимный класс не используют переменных из объемлющей области видимости, то компилятор не станет их захватывать и разницы со ссылкой на метод не будет. Чтобы убедиться в этом, проведём эксперимент. Нам понадобится три класса:
    import java.util.function.Supplier;
    
    public class ExampleWithMethodRef {
        private static String someMethod() {
            return "Internal value";
        }
    
        public static void main(String[] args) {
            String value = "External value";
            Supplier<String> lambda = ExampleWithMethodRef::someMethod;
        }
    }

    import java.util.function.Supplier;
    
    public class ExampleWithLambda {
        public static void main(String[] args) {
            String value = "External value";
            Supplier<String> lambda = () -> "Internal value";
        }
    }

    import java.util.function.Supplier;
    
    public class ExampleWithCapturingLambda {
        public static void main(String[] args) {
            String value = "External value";
            Supplier<String> lambda = () -> value;
        }
    }

    Скомпилируем все три и запустим с параметром -Djdk.internal.lambda.dumpProxyClasses=. В рабочем каталоге появятся классы, в которые разворачиваются лямбды и ссылки на методы. Посмотрим, что у них внутри:

    javap -p -c ExampleWithMethodRef$$Lambda$1
    final class ExampleWithMethodRef$$Lambda$1 implements java.util.function.Supplier {                       
      private ExampleWithMethodRef$$Lambda$1();                                                               
        Code:                                                                                                 
           0: aload_0                                                                                         
           1: invokespecial #10                 // Method java/lang/Object."<init>":()V                       
           4: return                                                                                          
                                                                                                              
      public java.lang.Object get();                                                                          
        Code:                                                                                                 
           0: invokestatic  #19                 // Method ExampleWithMethodRef.someMethod:()Ljava/lang/String;
           3: areturn                                                                                         
    }


    javap -p -c ExampleWithLambda$$Lambda$1
    final class ExampleWithLambda$$Lambda$1 implements java.util.function.Supplier {                          
      private ExampleWithLambda$$Lambda$1();                                                                  
        Code:                                                                                                 
           0: aload_0                                                                                         
           1: invokespecial #10                 // Method java/lang/Object."<init>":()V                       
           4: return                                                                                          
                                                                                                              
      public java.lang.Object get();                                                                          
        Code:                                                                                                 
           0: invokestatic  #19                 // Method ExampleWithLambda.lambda$main$0:()Ljava/lang/String;
           3: areturn                                                                                         
    }


    javap -p -c ExampleWithCapturingLambda$$Lambda$1
    final class ExampleWithCapturingLambda$$Lambda$1 implements java.util.function.Supplier {                                            
      private final java.lang.String arg$1;
                                                                                                                                         
      private ExampleWithCapturingLambda$$Lambda$1(java.lang.String);                                                                    
        Code:                                                                                                                            
           0: aload_0                                                                                                                    
           1: invokespecial #13                 // Method java/lang/Object."<init>":()V                                                  
           4: aload_0                                                                                                                    
           5: aload_1                                                                                                                    
           6: putfield      #15                 // Field arg$1:Ljava/lang/String;                                                        
           9: return                                                                                                                     
                                                                                                                                         
      private static java.util.function.Supplier get$Lambda(java.lang.String);                                                           
        Code:                                                                                                                            
           0: new           #2                  // class ExampleWithCapturingLambda$$Lambda$1                                            
           3: dup                                                                                                                        
           4: aload_0                                                                                                                    
           5: invokespecial #19                 // Method "<init>":(Ljava/lang/String;)V                                                 
           8: areturn                                                                                                                    
                                                                                                                                         
      public java.lang.Object get();                                                                                                     
        Code:                                                                                                                            
           0: aload_0                                                                                                                    
           1: getfield      #15                 // Field arg$1:Ljava/lang/String;                                                        
           4: invokestatic  #28                 // Method ExampleWithCapturingLambda.lambda$main$0:(Ljava/lang/String;)Ljava/lang/String;
           7: areturn                                                                                                                    
    }


    Невооружённым глазом видно, что байткод вариантов со ссылкой на метод и лямбдой, не использующей переменную, идентичен, в обоих случаях происходит обращение в пул констант. Но если лямбда обращается к переменной, то в прокси-классе появляется поле arg$1, содержащее значение захватываемой переменной. Формально это влияет на потребление памяти, но если вы не собираетесь генерировать лямбды миллионами, то это влияние которым можно пренебречь, тем более во времена, когда даже на мобильных устройствах объёмы памяти измеряются гигабайтами.
    Ответ написан
    1 комментарий
  • Хватит ли 10 гб для django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Для Django хватит. Для нужд написанного на нём проекта - вам виднее.
    Ответ написан
    3 комментария
  • Есть ли python с нестрогой типизацией?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Слабая типизация для слабых программистов.
    Ответ написан
    3 комментария
  • Как в джанго работают пустые классы?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    2Gb.gif
    Ответ написан
    Комментировать
  • 500 ISE после добавления channels в проект?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Похоже на то, что Daphne использует ASGI3, а Channels использует ASGI2. Соответствующее issue.
    Ответ написан
    2 комментария
  • Выбор базы данных: PostgreSQL или MongoDB?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PostgreSQL
    Седой и строгий
    Есть простое правило для определения нужна ли вам монга: У вас есть три отдельных сервера для неё?
    Ответ написан
    4 комментария
  • Python requests отправка запросов через прокси при CPU 100%?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Есть вариант, что сервер просто обнаруживает слишком частые запросы.
    Ответ написан
    1 комментарий
  • Как решить задачу со Stepik.org?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Самостоятельно. Иначе зачем вы проходите курс?
    Ответ написан
    Комментировать
  • Что почитать или посмотреть про Java Stream Api(годное)?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Ричард Уорбэртон - Лямбда-выражения в Java 8
    Ответ написан
    Комментировать
  • Какую книгу или курсы можно посмотреть по изучению JAVA на 2020 год?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Такую же, как в 2019-м. Этот вопрос здесь задавали сотни раз.
    Ответ написан
    5 комментариев
  • Как добавить второй домен на сайт, что бы два домена ссылались на один сайт?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    1. В A-запись второго домена прописывается адрес web-сервера
    2. В конфигурации web-сервера прописывается второй домен
    3. PROFIT
    Ответ написан
    2 комментария
  • PHP или Python для собственного WEB?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Что лучше знаете, на том и пишите.
    Ответ написан
    3 комментария
  • PHP или Python для собственного WEB?

    Adamos
    @Adamos
    Если вы действительно собираетесь писать все-все с нуля, то язык безразличен, и даже разница между Django и Laravel, в сущности, невелика.
    Другое дело, что велосипеды сплошь и рядом не так эффективны и просты, как это кажется "на берегу". Поддержка их и добавление фич могут быстро оказаться дороже, а результат - хуже, чем использование готовых решений. А с ними, насколько я могу судить, у РНР получше, если речь о вебе и обычных для него задачах.
    Особенно для новичков-велосипедистов, для которых открытием оказывается, что то, что они полгода лелеяли и изобретали из головы, имеет столько готовых решений...
    Ответ написан
    1 комментарий
  • Зачем нужны опережающие и ретроспективные проверки?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Потому что некоторые задачи имеют дело с повторениями.

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

    Однако что если вам нужно найти все цифры между двумя E?
    Вот такие:
    E123ExxxE456E789E

    По вашей логике нужно выражение: /E(\d+)E/
    И да, оно действительно найдёт 123 и 456 (см. ссылку), но на 789 оно сломается, потому что там E входит как бы сразу в две подстроки. В этом случае и нужен позитивный просмотр вперёд. Мы как бы подсматриваем, что там впереди, но не захватываем, поэтому поиск следующей подстроки начинается раньше.
    Для такой задачи решением будет: /E(\d+)(?=E)/
    Ответ написан
    Комментировать
  • Перспективно ли становиться Android-разработчком?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как всегда, заголовке одно, а в голове - бессвязные мечтания.
    Судя по тексту вопроса, автор понимает под "андроид разработчиком" этакого инди-одиночку, который напишет супер-приложение и загребет кучу денег.
    С такой позицией в андроид разработчики идти нет смысла, поскольку как уже выше сказали, одиночка - это в первую очередь самостоятельность. Но помимо одиночек над приложениями работают и коллективы, когда работа ведется над развитием одного и того же приложения. То есть ты вполне себе являешься андроид разработчиком, но проблема, какое приложение писать, в принципе не стоит.

    Ну и вообще с такими настроениями не стоит.
    Заниматься каким-то делом стоит если тебе интересно, ну и если важен финансовый аспект - если профессия в принципе востребована. То есть если ты точно знаешь, чем хочешь заниматься. Но в этом случае ты не будешь спрашивать посторонних людей.
    Ответ написан
    Комментировать
  • Перспективно ли становиться Android-разработчком?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    За мобильностью будущее, но место в нём есть только для тех разработчиков, которые могут самостоятельно об этом узнать.
    Ответ написан
    1 комментарий
  • Почему false срабатывает как true?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Строка false, разумеется приводится к true.
    В РНР будет ровно то же самое, условие if('false') выполнится.

    А чтобы false воспринималось как булево значение, а не как строка, надо либо сказать твоему яваскрипту, что он ждёт специальным образом кодированные данные, либо РНР - что он отправляет не HTML, а некий другой формат.

    В общем, обилие комментаторов с советами вида "пальцем в небо" наглядно показывает уровень понимания средним пользователем похапе своих действий.

    В целом направление мысли верное - система воспринимает переданное значение как строку, а не как булево значение. Но на этом мысль и останавливается.
    Хотя при некотором усилии можно было бы продолжить и рассудить - что поскольку протокол НТТР чисто текстовый, то никакие булевы значения через него по умолчанию передать нельзя. А так же объекты, массивы, и прочие типы данных.
    И для того чтобы сделать это возможным, был придуман специальный формат кодирования. Который позволяет передавать данные различнызх типовв, и который автор, несомненно, уже применяет (вследствие чего, собственно, из булева значения и получается строка false).

    То есть единственным недостающим звеном в этой головоломке является контекст, в зависимости от которого яваскрипт будет воспринимать строку false либо как строку, либо как булево значение. То есть нужен способ РНР и яваскрипту договориться, в каком формате они обмениваются данными. Стандартным способом является НТТР заголовок Content-type. Который скажет браузеру, что данные не в дефолтом формате HTML, а в другом.

    Либо как вариант, можно прямо при вызове функции ajax явно задать, в каком формате придут данные. Если озаботиться изучением документации по этой функции.
    Ответ написан
    Комментировать
  • Трудоустройство программиста на Python?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    2. Нужны ли какие-то языки, фреймворки, помимо основного Python ну и базовых фреймов типа Django

    Ну заходишь на биржу труда, ищешь вакансии, читаешь требования.

    1. Насколько сильно нужно углубляться в язык, чтобы приблизиться к средней по рынку, допустим, СПБ з/п (около 100.000р в месяц)

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

    3. Насколько трудно будет устроиться на работу, имея необходимые знания и навыки, но не имея диплома и опыта работы в компании

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

    4. Вероятно лучше для начала выбрать тип фриланс-бирж, а не компаний?

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