Обновить
33
Maksim Kupriianov@Xlab

Senior Blockchain Engineer

44
Подписчики
Отправить сообщение
Немного не ясно значение понятия «системное программирование». Вот в зарубежных версиях документации даже Swift подаётся как «a systems programming language», а wiki говорит:
A System programming language is usually used to mean «a language for system programming»: that is, a language designed for writing system software as distinct from application software. System software is computer software designed to operate and control the computer hardware and to provide a platform for running application software, and includes such things as operating systems, utility software, device drivers, compilers, and linkers.
То есть, следует различать системное программирование от программирования микроконтроллеров с 4кб памяти.
Стоит заметить, что Siri уже давно так делает, а с недавних пор и Дуся (при помощи Google). Но для дома это выглядит довольно стрёмно, например проект Вика от ClusterM, я б не стал таким заниматься.
Такие игры как Candy Crush Saga, Farm Heroes Saga были и в 2004, никто о них не помнит уже. Были и поинтереснее.
Вообще новое — это хорошо забытое старое, но фактор успеха здесь и рядом не лежал. Не знаю, что дало популярность именно этим экземплярам — возможно, они просто появились в нужное время и в нужном месте и набрали критическую массу пользователей, а дальше пошло как вирус.
Вы предлагаете умную чашку? Боюсь, напор в среднестатистической заправочной трубочке не позволит отмерить ровно чашку.
Переход на Go это дело времени, гугл другими способами этого добивается. А вот если бы ваш план существовал, TJ Holowaychuk бы сделал цикл статей про Google+
Фразы «Слава джаваскрипту!» и «Смерть человекам!» не так сильно отличаются по сути.
Я пойму, что у меня настал чёрный день, когда увижу эту строчку в выводе компиляции при сборке чужого проекта.
Согласен с вами, что отображение процентов это задача UI. Но я спрашивал, где вы вычисляете проценты, то есть делите часть на целое и умножаете на 100.
А они как и положено находятся в MessageViewModel.
А вот здесь вы не правы, проценты у вас считаются в файле Engine/API/StandardAPI/ClientCommands/Files/ClientWriteFilePartCommand.cs#L71

downloadEventArgs.Progress = (int)((downloadingFile.WriteStream.Position * 100) / receivedContent.File.Size);

и потом всплывают, как вы верно заметили, в MessageViewModel.cs#L147

    private void ClientDownloadProgress(object sender, FileDownloadEventArgs e)
    {
      roomViewModel.MainViewModel.Dispatcher.Invoke(new Action<FileDownloadEventArgs>(args =>
      {
          .....
          if (args.Progress >= 100)

Ну вы и без меня всё это прекрасно помните.
Напоминает FizzBuzz Enterprise Edition.

Довольно простая и наглядная задача была, но в данном исполнении актуальный код, делающий работу, затерян в кишках огромного монстра. Я еле нашёл то место, где осуществляется передача части файла через P2P, причём место, где происходит контроль и вычисляются проценты — не нашёл. Вы уверены, что сможете за адекватное время прикрутить к этому шифрование, если вас внезапно попросят?

Не tree, а лес дремучий
$ tree Engine/
Engine/
├── API
│   ├── IClientAPI.cs
│   ├── IClientAPICommand.cs
│   ├── IServerAPI.cs
│   ├── IServerAPICommand.cs
│   └── StandardAPI
│       ├── BaseCommand.cs
│       ├── ClientCommands
│       │   ├── ClientCommand.cs
│       │   ├── Files
│       │   │   ├── ClientFilePostedCommand.cs
│       │   │   ├── ClientPostedFileDeletedCommand.cs
│       │   │   ├── ClientReadFilePartCommand.cs
│       │   │   └── ClientWriteFilePartCommand.cs
│       │   ├── Messages
│       │   │   ├── ClientOutPrivateMessageCommand.cs
│       │   │   ├── ClientOutRoomMessageCommand.cs
│       │   │   └── ClientOutSystemMessageCommand.cs
│       │   ├── Others
│       │   │   ├── ClientEmptyCommand.cs
│       │   │   ├── ClientPingResponceCommand.cs
│       │   │   └── ClientReceiveUserOpenKeyCommand.cs
│       │   ├── P2P
│       │   │   ├── ClientConnectToP2PServiceCommand.cs
│       │   │   ├── ClientConnectToPeerCommand.cs
│       │   │   └── ClientWaitPeerConnectionCommand.cs
│       │   ├── Registrations
│       │   │   └── ClientRegistrationResponseCommand.cs
│       │   ├── Rooms
│       │   │   ├── ClientRoomClosedCommand.cs
│       │   │   ├── ClientRoomOpenedCommand.cs
│       │   │   └── ClientRoomRefreshedCommand.cs
│       │   └── Voice
│       │       └── ClientPlayVoiceCommand.cs
│       ├── ServerCommands
│       │   ├── BaseServerCommand.cs
│       │   ├── Files
│       │   │   ├── ServerAddFileToRoomCommand.cs
│       │   │   └── ServerRemoveFileFormRoomCommand.cs
│       │   ├── Messages
│       │   │   ├── ServerSendPrivateMessageCommand.cs
│       │   │   └── ServerSendRoomMessageCommand.cs
│       │   ├── Others
│       │   │   ├── ServerEmptyCommand.cs
│       │   │   ├── ServerGetUserOpenKeyCommand.cs
│       │   │   └── ServerPingRequestCommand.cs
│       │   ├── P2P
│       │   │   ├── ServerP2PConnectRequestCommand.cs
│       │   │   └── ServerP2PReadyAcceptCommand.cs
│       │   ├── Registrations
│       │   │   ├── ServerRegisterCommand.cs
│       │   │   └── ServerUnregisterCommand.cs
│       │   ├── Rooms
│       │   │   ├── ServerCreateRoomCommand.cs
│       │   │   ├── ServerDeleteRoomCommand.cs
│       │   │   ├── ServerExitFormRoomCommand.cs
│       │   │   ├── ServerInviteUsersCommand.cs
│       │   │   ├── ServerKickUsersCommand.cs
│       │   │   ├── ServerRefreshRoomCommand.cs
│       │   │   └── ServerSetRoomAdminCommand.cs
│       │   └── ServerCommand.cs
│       ├── StandardClientAPI.cs
│       └── StandardServerAPI.cs
├── Audio
│   ├── IPlayer.cs
│   ├── IRecorder.cs
│   └── OpenAL
│       ├── OpenALPlayer.cs
│       └── OpenALRecorder.cs
├── Containers
│   ├── RequestPair.cs
│   ├── WaitingCommandContainer.cs
│   └── WaitingPrivateMessage.cs
├── Engine.csproj
├── EventArgs
│   ├── AddressReceivedEventArgs.cs
│   ├── AsyncErrorEventArgs.cs
│   ├── ConnectEventArgs.cs
│   ├── DataReceivedEventArgs.cs
│   ├── DataSendedEventArgs.cs
│   ├── FileDownloadEventArgs.cs
│   ├── ReceiveMessageEventArgs.cs
│   ├── RecordedEventArgs.cs
│   ├── RegistrationEventArgs.cs
│   └── RoomEventArgs.cs
├── Exceptions
│   ├── ErrorCode.cs
│   └── ModelException.cs
├── Helpers
│   ├── Crypter.cs
│   └── Logger.cs
├── Model
│   ├── Client
│   │   ├── ClientContext.cs
│   │   └── ClientModel.cs
│   ├── Common
│   │   └── ModelContext.cs
│   ├── Entities
│   │   ├── DownloadingFile.cs
│   │   ├── FileDescription.cs
│   │   ├── PostedFile.cs
│   │   ├── Room.cs
│   │   ├── RoomType.cs
│   │   ├── SoundPack.cs
│   │   ├── User.cs
│   │   └── VoiceRoom.cs
│   └── Server
│       ├── ServerContext.cs
│       └── ServerModel.cs
├── Network
│   ├── AsyncClient.cs
│   ├── AsyncPeer.cs
│   ├── AsyncServer.cs
│   ├── Conections
│   │   ├── Connection.cs
│   │   ├── IConnection.cs
│   │   └── ServerConnection.cs
│   └── P2PService.cs
└── Properties
    └── AssemblyInfo.cs

31 directories, 89 files
Размышления о звуке с других планет почему-то напоминают о рассказе «Тихая смерть» www.xakep.ru/magazine/xa/076/124/1.asp
На устройство не прилетают пароли в открытом виде, а на ящик прилетают.
На устройство не прилетают ссылки подтверждения удаления аккаунта, а на ящик прилетают.
А также ссылки смены пароля, подтверждения регистрации, и тд и тп. И если каждый год всплывает какая-нибудь хитрая ссылка, по переходу которой вы автоматически что-то ретвитите, то вот теперь будут ловушки, когда вы автоматически удаляете себе акк, например.
Например, стороннее приложение может запросить доступ только на отправку писем (но не чтение), или только на чтение (но не отправку)
Какая прелесть, теперь в интернете можно нажать на кнопку и не просто что-то там расшарить или репостнуть себе на стену, а слить весь свой почтовый ящик? Чую особенный спрос на XSS в ближайшее время.

Например, любая программа может автоматически подтверждать email, не вынуждая человека щёлкать по ссылке подтверждения. Достаточно всего лишь сканировать папку «Входящие» на появление соответствующего текста.
Кем надо быть, чтобы такое выдумать. Или я что-то неправильно понимаю?
Мне было интересно почитать. Этого уже достаточно.
То же самое можно сказать и про C++, мол, язык держится на плаву только благодаря тонне легаси.
Взлетел != адекватен.
Посмотрел на рейтинг и понял, что пора с python переходить на Visual Basic, ибо тренд очевиден.
Smalltalk дал начало Obj-C, который взлетел. И ещё другим дал.
Насчёт D — они заведомо пошли по неправильному пути, сделав первый компилятор только для windows, затем только для x86, и вот, наконец, недавно начали заниматься ARM и даже открыли исходники. Так дела не делаются, вот и ушёл поезд.

А про Go это вы вообще зря, изучите тему получше.
Стоит отметить, что в PHP иной раз замена через regexp может быть в 30 раз медленнее замены через str_replace, поэтому шутки шутками, но без бенчмарков судить сложно.
Сравнения по наличию функции приёма СМС
В SMSC есть опция приёма, с 1000р/мес. А вот у сервиса Twilio российских нормеров нет. Но подробный анализ не помешал бы, да.
Предавать забвению ваши знания ни в коему случае нельзя. Сам когда-то интересовался Dingoo A320, было бы интересно почитать пару историй от участника культа.

Информация

В рейтинге
Не участвует
Откуда
Barcelona, Barcelona, Испания
Дата рождения
Зарегистрирован
Активность