• Как избавиться от callback-hell с помощью промисов?

    @GreatRash
    Избавляясь от callback hell вы при этом нарушаете принцип KISS. Вместо прозрачного и понятного (но не очень модного кода) вам советуют трудно читаемую (зато модную) лапшу. Ну хз...
    Ответ написан
    Комментировать
  • Как правильно отправлять soap-запросы, используя C# (в особенности - на сервера AdvCash)?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Обычно это так делается:

    cc28a9b90a31407aab7b6af750336a88.png

    Ссылка на службу: https://wallet.advcash.com:8443/wsm/merchantWebSer...

    3b825f13a4d64c25ae507b698550b686.png
    А дальше дело кода :-)

    // ServiceReference1 - см. на картинке выше, можно указать любое имя
    var client = new ServiceReference1.MerchantWebServiceClient();
    // и смотрите какие есть методы в client и что требуется для их использования
    // могут быть и другие подводные камни и особенности,
    // но свой код взаимодействия писать не придется
    // для большинства случаев достаточно будет автоматически созданных классов
    Ответ написан
    5 комментариев
  • Как отрендерить JSON в React.js?

    evgenyspace
    @evgenyspace
    Исследователь
    Хочу добавить по структуре данных json. Если есть возможность, храните данные в формате массив чего-то, а не объект чего-то. Метод map для массива быстрее того же for in для объекта.
    {
        books: [ { id: 1, name: "Sample", author: "Somebody", genre: "Tales" }, { id: 2, name: "Sample2", author: "Somebody2", genre: "Tales2" } ]
    }


    book1, 2, ... N - вставлять нет смысла, т.к. книги хранятся в значении свойства "books", а id определяет порядковый номер
    Ответ написан
    Комментировать
  • Как отрендерить JSON в React.js?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Всегда когда вам приходит какая-то структура, нужно пробегать ее полностью по каждому элементу, чтобы сгенерировать JSX-элемент. Для массивов обычно используют .map метод, для объектов - например Object.keys (так же подойдут конечно, и цикл forEach для массива, и цикл for in для объекта и т.д.)

    Так как у вас в JSON приходит не массив объектов, а объект объектов то вам нужно пробегать с помощью Object.keys, например, и потом еще применить map к получившемуся массиву ключей. Пример получившегося массива:

    6b13d2ad4f6241f4bb3c378385646082.jpg

    Применяем map:

    const template = Object.keys(data.books).map(item => <span key={data.books[item].id}>{data.books[item].author} - {data.books[item].name}</span>)


    В данном случае в переменной template окажутся 2 JSX-элемента (тэги span с данными). Вам скорее всего нужно, чтобы это было tr. Поменять не трудно)

    А json-loader вам нужен для того, чтобы webpack мог корректно импортировать такие файлы, так как пока json-лоадера нет, вебпак не знает как обрабатывать файлы с расширением .json. По такому же принципу вы подключаете css-loader, например, чтобы webpack мог "импортить цсски"
    Ответ написан
    1 комментарий
  • Не срабатывает onchange в React Datepicker?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    У вас на onChange функция, которая просто форматирует дату. И все, я даже затрудняюсь сказать, какой от этого будет эффект, но помоему никакой.

    Нужно на onChange прокидывать функцию - создатель действия, например, у нас это будет myAction.

    Следовательно, где-то там в actions будет примерно такой код:

    export function myAction(date) {
      return {
        type: 'CHANGE_DATE',
        data: date
      }
    }


    Затем где-то в редьюсере, должно быть соответствующее условие, например, на case 'CHANGE_DATE' у вас будет устанавливаться в current дата. (специально не пишу код, чтобы немного поработали сами).

    В конце концов, в вашем контейнере, у вас должны быть mapStateToProps и mapDispatchToProps примерно такого вида:

    const mapStateToProps = (state) => ({
      dates: state.dates,
    })
    
    const mapDispatchToProps = (dispatch) => ({
      myAction: (date) => dispatch(myAction(date)),
    })


    Ну и само подключение DayPickerSection будет выглядеть примерно так:

    <DayPickerSection selected={this.props.dates.current}  myAction={this.props.myAction} />


    А в рендере (имеется в виду в рендере DayPickerSection) будет следовательно:

    const DayPickerSection = ({selected, myAction}) => {
        return (
            <div>
                <DatePicker selected={selected}
                            onChange={(date) => myAction(date) }/>
            </div>
        );
    };


    Итого (читать медленно): в onChange компонента DatePicker попадет свойство this.props.myAction "прокинутое" в DayPickerSection. В свою очередь, в DayPickerSection это свойство будет равно функции, которая будет "прокинута" с помощью mapDispatchToProps в this.props контейнера. Контейнер, называйте его как хотите, в нашем случае это родительский элемент, например, который "приконекчен" (c помощью функции connect), и который из-за этого принимает к себе в this.props данные описанные в mapStateToProps и в mapDispatchToProps, которые в свою очередь являются чем то вроде карты. То есть, в конечном счете в this.props.myAction вашего контейнера попадет функция myAction из вашей папки actions. Конечно, для этого ее нужно импортировать в начале файла (import { myAction } from '../actions'.)

    Контейнер может выглядеть так:

    import React, { Component } from 'react'
    import { connect } from 'react-redux'
    import { myAction } from '../actions'
    
    class App extends Component {
      render() {
        const { dates, myAction } = this.props
    
        return (
          <div className='my-app'>
            <DayPickerSection selected={dates.current}  myAction={myAction} />
          </div>
        )
      }
    }
    
    const mapStateToProps = (state) => ({
      dates: state.dates,
    })
    
    const mapDispatchToProps = (dispatch) => ({
      myAction: (date) => dispatch(myAction(date)),
    })
    
    export default connect(mapStateToProps, mapDispatchToProps)(App)
    Ответ написан
    1 комментарий
  • Yii2 Active Record Как правильно написать запрос больше или равно?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    MyModel::find()->where(['>','id',3])->one();
    Ответ написан
    3 комментария
  • MVC: Кто должен заниматься приемом данных с формы контроллер или модель?

    erniesto77
    @erniesto77
    oop, rb, py, php, js
    любой запрос на сервер надо принимать контроллером.

    В случае с отправкой формы, чаще всего используют такую последовательность:
    1 Данные формы отправляются на контроллер
    2 С контроллера данные отправляются в модель для обработки (валидации)
    3 Модель возвращает обработанные данные или результат обработки на контроллер
    4 Контроллер в зависимости от обработки данных выводит html-отображение для клиента
    Ответ написан
    Комментировать
  • Как транслировать видео в реальном времени по ссылке?

    NeLexa
    @NeLexa
    На этом сайте воспроизводится видео в формате flv. Скорее всего оно не будет отображаться в VideoView.
    К тому же видео загружается отдельными чанками. Нажмите в браузере F12 и отследите медиа запросы, а далее найдите алгоритм по которому отдаётся видео в коде страницы.
    Ответ написан
    Комментировать
  • Создание блога, что выбрать?

    @feldwebel
    Wordpress можно воткнуть на сайт, настроить и пользоваться, не то чтобы ничего не понимая в PHP, а вообще не приходя в сознание.
    Ответ написан
    Комментировать
  • Почему в опубликованном приложении не загружаются данные?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Проблема только в архитектуре: когда доступ идёт через другой протокол - данные могут не грузиться. Смотрите установленные политики в конфигурационном файле и доступы!
    Ответ написан
    Комментировать
  • Стоит ли возвращать долг Hetzner?

    @MatasDragonV
    Читаю некоторые ответы и диву даюсь - видимо пишут как раз сотрудники российского представительства hetzner. Специально для более обьективного решения вопроса разберу все юридические тонкости. Пишется для ликвидации правовой безграмотности в случае если вам пытаются повесить долг за сервер которым вы не пользовались, а не для "сьезжания" с реальных долгов.
    Первое и самое главное - вы гражданин другой страны, компания находится в другой стране. По нормам международного права существует понятие территориальной подсудности. То бишь если вы с чем-то не согласны с оказанными вами услугами и захотите подать на них в суд - вы должны это делать где? По месту нахождения ответчика, т.е. в Германии. Аналогично обратный процесс - компания hetzner не согласно с выполнением вами условий - где она должна судиться с вами? Верно, в вашем российском районном суде если у вас нет вида на жительство и временной регистрации в Германии. Так как если у вас двойное гражданство и адрес в Германии - то да, сначала коллекторы, потом омбудсмен из инкассо предлагает решить вопрос досудебно, дальше суд. Но если вы проживаете в России, в Германии никогда не были и не собираетесь, по нормам международного права запрашивается либо суд в стране ответчика и по законам страны ответчика, либо заочное решение в стране истца в случае согласия ответчика проведения заседания в стране и суде не относящимся к его территориальной подсудности. И главный момент - даже если судебное решение в Германии вынесено заочно - в России его все равно не исполнят т.к. между странами нет договора о правовой помощи, да и если данный договор будет заключен (что маловероятно судя по текущим международным отношениям), судебное решение перерассматривается применительно к законам страны истца и только потом исполняется. Т.е. все это довольно геморно. Что будет скорее всего - будут доставать писульками всякие выбивалы из Немецких коллекторских агенств. Почта эта не заказная - так что ее смело в мусорку, никто не докажет в случае чего что именно вы ее получили (особенно зная раздолбайство ПР).
    Скорее всего на этом и закончится. Но если они для себя решили что долг реально большой, могут далее:
    1. Продать "долг" российским коллекторам. С ними не разговаривам вообще, шлем в суд. Никаких данных не сообщаем. Алгоритм аналогичен как и с любым российским долгом. Прав они никаких не имеют, в случае угроз обращаемся в полицию. Как с ними общаться и стоит ли их бояться - есть много статей в гугле.
    2. Если таки подали в суд в России. На первом этапе скорее всего попробуют протолкнуть судебный приказ через "своего" мирового судью. Для них это хорошо тем что решение выносится без судебного заседания и отправляется на принудительное взыскание. А для вас хорошо тем что судебный приказ отменяется так же быстро как и выносится в случае несогласия истца.
    Дальше в порядке общего производства (очень маловероятно, обычно применяется при взыскании долгов более 10к$), если все таки это произошло - толковый юрист "раскидает" дело в вашу пользу за пару минут. Основной момент - по ГК РФ при возможности оказания услуг в кредит должно составляться отдельное соглашение, которое должно быть подписано собственноручно клиентом. Если как и обычно принесут только ваш скан паспорта (у них кроме скана и истории платежей ничего нет) - дело выиграете 100%, т.к. в данном случае образовавшаяся задолженность будет проблемой истца а не вашей. Ну а далее собственно на истца можно вкатать встречный иск с компенсацией ваших судебных расходов на юриста. Поэтому риск "попасть на еще большие" деньги для истца велик, суд КРАЙНЕ маловероятен.

    Ну а что же по заочному судебному решению в Германии (которое вынести на иностранного гражданина довольно трудно) - вам скорее всего будут "чесать" всякие страсти что визу закроют, в отпуск в Грецию не пустят и так далее. Открою одну тайну - наши соотечественники на отдыхе часто попадают на крупные штрафы в странах европы, т.е. должны даже не какой-то там частной конторе а ГОСУДАРСТВУ! Вы думаете им отказывают в визах? Глубоко ошибаетесь, как ездили так и ездят, притом что долги у них гораздо выше чем "неотмененный в течение полугода сервер", раз эдак в 10.

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

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

    @nirvimel
    На любом из перечисленных языков.
    Ответ написан
    Комментировать
  • Зачем нужен Dependency Injection в Android разработке?

    artemgapchenko
    @artemgapchenko
    Начать неплохо бы с понимания того, что такое DI. Обратимся к википедии:

    Внедрение зависимости (англ. Dependency injection, DI) — процесс предоставления внешней зависимости программному компоненту.

    Если выражаться не канцеляритом, а обычным русским языком, то DI - это когда вы своему компоненту (например, классу) предоставляете нужные для него зависимости извне, а не создаете их сами в конструкторе, или через инициализацию в месте объявления поля. То есть не так:

    public class Api {
    	....
    	private final HttpClient client = new OkClient();
    }

    А, например, так:

    public class Api {
    	....
    	private final HttpClient client;
    
    	public Api(@NonNull HttpClient client) {
    		this.client = client;
    	}
    }


    И что нам это даёт?

    Ну, очевидно, нам теперь проще менять зависимости. Нужна вам другая реализация абстрактного класса HttpClient - взяли, и передали её через конструктор, или через метод-setter. В случае с первым куском кода, вам пришлось бы ещё и класс Api переписывать, что в случаях, отличных от тривиальных, может привести к ошибкам. Получается, что ваш класс теперь закрыт от изменений (смотрим Open/Closed Principle).

    Окей, а на практике-то какие бенефиты?

    Во-первых, вы теперь можете написать инициализацию вашей программы через конфигурационные файлы. Скажем, на старте будет читаться простенький текстовый файл, который определяет, какой httpclient использовать, какие настройки доступа к бд применять и так далее, и, исходя из этого, будут определяться зависимости.
    Во-вторых, вам теперь существенно проще писать тесты. Написали вы, скажем, какой-нибудь парсер, который принимает InputStream, содержащий в себе данные json-объекта, как-то хитро его парсит, и выдаёт вам объект вашей бизнес-модели. В приложении этот парсер будет принимать на вход реализацию InputStream'а, которая берёт данные из сети, а в тестах - реализацию, которая просто читает файл с диска (потому что тесты должны выполняться часто и быстро, и ваша задача в тесте - протестировать ваш парсер, а не скорость сетевого соединения).

    Вот, в общем-то, и всё. А Dagger - это просто библиотека, которая автоматизирует ручное внедрение зависимостей, равно как и другие DI-библиотеки.

    P.S. В некоторых случаях чрезмерное увлечение DI может привести к нежелательным эффектам, вроде чрезмерного усложнения кода, поэтому внедряйте аккуратно. Понимание приходит с опытом.
    Ответ написан
    Комментировать
  • Как переписать данный алгоритм на C#?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Подводя итоги обсуждения в комментариях.

    bytearray - не содержит текст. Это тело файла Flash.

    В строке:
    s = s + (base64[i + 1] + base64[i]);

    Следует работать с символами как со строками, а не кодами символов:
    s = s + (base64[i + 1].ToString() + base64[i].ToString());


    В остальном вроде ошибок нет. Код использования примерно такой:
    byte[] data;
    data = Convert.FromBase64String(DecryptBFF(book.Content));
    File.WriteAllBytes("output.swf", data);

    Файл output.swf можно открыть в проигрывателе Flash или браузере.

    Будем надеяться, что все законно :-)
    Ответ написан
    1 комментарий
  • Как сверстать сетку в android studio?

    @onepavel
    Консультация и разработка мобильных приложений
    <GridView
                a:id="@+id/gridView"
                a:layout_width="fill_parent"
                a:layout_height="fill_parent"
                a:columnWidth="90dp"
                a:numColumns="auto_fit"
                a:verticalSpacing="10dp"
                a:horizontalSpacing="10dp"
                a:stretchMode="columnWidth"
                a:gravity="center">
    Ответ написан
    Комментировать
  • Как создать бд под android?

    deadbyelpy
    @deadbyelpy
    веб-шмеб
    Никак, а зачем такая надобность?
    После запуска приложения вы можете получить доступ к бд этого вполне достаточно для множества задач.
    Ответ написан
    6 комментариев
  • Почему у меня OpenGL работает некорректно или вообще не работает?

    MrGobus
    @MrGobus
    Иван
    При создании окна вы указываете GLUT_DOUBLE, что означает что будет включен режим двойной буферизации, то есть картинка рисуется в памяти машины а потом выводится на экран с целью избежать мерцания и видимой прорисовки. Для того, чтобы изображение появилось на экране при завершении построения кадра нужно вызывать функцию смены кадра, в случае с глут это вроде была glutSwapBuffers.
    В вашем примере это после glFlush();
    Ответ написан
    Комментировать
  • Можно ли работать программистом закончив бакалавриат Бизнес-информатики?

    mmmaaak
    @mmmaaak
    Я Ваще без вышки работаю и норм, она у меня в процессе получения, название твоего направления никого не интересует (ну я думаю в большинстве компаний, по крайней мере там, где я собеседовался), всем важны твои навыки и умения. Я учусь хоть и на программиста, но в работе использую знания накопленные собственными силами, с третьего курса понял, поработав месяц на первой работе по специальности в качестве стажера, что в универе по большому счету дают знания, которые на практике особо не помогут, все приобретается собственными стараниями, со временем. Так что учиться можете на кого угодно, главное чтоб у Вас были знания. А диплом, судя по всему, чисто формальность (мое субъективное мнение, никому не навязываю, и не отрицаю, что кто-то где-то столкнулся с обратной ситуацией)
    Ответ написан
    2 комментария
  • Изучение Yii, с чего начать, куда двигаться

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    все что вы хотите есть в документации. Хотите большего - почитайте про общие принципы разработки, паттерны проектирования и все такое прочее. Все эти знания не привязаны к фреймворку и помогут вам писать более качественный код, а так же упростит жизнь при командной разработке в будущем.

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