Как стать автором
Обновить
9
0.1
Игорь @itmind

Fullstack

Отправить сообщение

SSR и SSG при таком подходе будут поддерживаться?

И мне больше нравится вариант отрисовки компонентов через функции, как в Compose Multiplatform (в котором есть компиляция в js) или SwiftUI

fun main() = runBlocking{
    println("program runs...: ${Thread.currentThread().name}")

    val taskDeferred = async {
        generateUniqueID()
    }

    val taskResult = taskDeferred.await()

    println("program run ends...:  
        ${taskResult}  ${Thread.currentThread().name}")
}

Чем это отличается от вызова обычной, не suspend, функции?

Есть у меня нативное приложение под android (compose). Получает данные с сервера, отображает, хранит данные в sqlite и делает бэкап в хранилище. Решил сделать его кросплатформенным: android+iOS+desktop+wasm. Выбирал между kmp и flutter. На Хабре топят за kmp, выбрал его (точнее compose multiplatform). И... Ничего быстро не получилось. В процессе выяснилось, что используемые мной сторонние compose библиотеки собраны только под android, а под compose multiplatform даже аналогов нет, нужно писать с нуля. Работа с файлами, получение разрешений, открытие диалогов открытия/сохранения файлов находится в composable функциях (т. к. это интерфейс) и это нельзя шарить между платформами, нужно под каждую писать свою реализацию, свои экраны. На это уйдёт много времени и по сути это как дублирование кода. Еще неизвестно с какими проблемами придется столкнуться под web.

Таким образом выбор kmp в разы увеличил время разработки, требует навыков разработки под ios. (Приложение пишу я один). Поэтому мне пока не понятны восхищённые отзывы об kmp. И теперь опять перед выбором: писать все с нуля и долго на kmp (всетаки как язык Kotlin нравится) или перейти на flutter и быстро получить результат под все платформы...

А довод про поиск разработчиков считаю невереным. Для разработки на flutter нужен один разработчик, для kmp два. Это же дороже в два раза. При этом сам язык Dart проще Kotlin, его изучить можно за пару дней (естественно имея базу из Си подобных языков).

В чем преимущество Ktorfit над Ktor ?

Почему выбран Room? Он вроде не мультиплатформенный.

По моему мнению громоздкий синтаксис у C#, Java, Kotlin, C++

Пример синтаксиса на C# (на Java похоже)

[Anotation1]
[Anotation2(Enum.Param)]
public static void TryAddSingleton<TService, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TImplementation>(this IServiceCollection collection)
            where TService : class
            where TImplementation : class, TService
        {...}

У Kotlin плюс ко всему его DSL, когда вызов функции пишется как объявление функции (и получаются многоярусные вложения на несколько экранов)

val appModule = module {
    single<UserRepository> { UserRepositoryImpl().apply{  
                                this.param = MyClass.GetParam()
                                  }
                            }
}

А на Golang исходный код проще всего читать, он понятнее, синтаксические конструкции прощее. Минимализм конструкций языка позволяет после пары часов изучения уже писать достаточно качественное ПО.

В Kotlin же например только 5 scope function: let, run, with, apply, и also. И программист глубоко не знакомый с языком, читая код не поймет, что там происходит? не прочитав документацию.

Я наоборот не могу набрать вес. Ем целый день, но по подсчету калорий выходит всего максимум 1600-1700. Физически съесть больше не могу, так как и так почти передаю, и поменять на жирные продукты не могу, т.к. проблема с ЖКТ тогда будет. Пример меню (один прием пищи - 250-400 грам):

Завтрак: Овсяная каша, куриная грудка отварная с сыром, банан

Перекус: яблоко, банан

Обед: картофельное пюре, котлета куриная

Перекус: банан

Ужин: рис, котлета из свинины, салат из овощей

Практически не ем: мучное (булки,хлеб), сладости: сгущенку, торты, печенья и прочее.

Голода никогда нет, так как ем много. И очень хочу набрать вес, но получается медленно.

В тех же Java, Kotlin, C# нужно так же чуть ли ни каждую строчку оборачивать в try-catch

Вот пример для Kotlin:

import java.io.IOException
import java.nio.file.Files
import java.nio.file.Paths
 
fun main() {
    val fileName = "/home/data/file.txt"
    try {
        val lines = Files.readAllLines(Paths.get(fileName))
        println(lines)
    } catch (e: IOException) {
        e.printStackTrace()
    }
}

А то, что не обернуто в try-catch, нужно проверить на null. Пример:

companydb = getCustomer(name, inn);
if (companydb == null) {}

Получается в Go много "if err != nil", а в Java/C# много if ( p != null ).

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

И проверки на null после каждого вызова функций никого не смущает.

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

В коде примера метод Hello объявлен на ресивере указателя Ben или Jerry. Если вместо этого объявить метод на значении Ben или Jerry, решит ли это проблему гонки данных?

Не решит, т.к. во первых проблема не в данных интерфейса, а в том, что тип и данные записываются разными операциями записи, между которыми может вклинится другая операция. И в самом интерфейсе всегда хранится ссылка на данные (uintptr). Не важно, что мы определили приемником значение, а не ссылку.

Или я не прав?

Итак, если пустая структура не содержит полей и не содержит данных, то зачем она нужна? 

Из текста я понял, что пустая структура нужна только для того, что бы использовать ее как ресивер метода.

И все? Зачем?

Конечно, есть вариант решить задачу «в лоб» — писать перегрузку на каждый тип данных, однако хотелось бы заставить компилятор помогать нам, не создавая 100500 методов.

Т.е. вместо 100500 методов вы предлагаете создать 100500 реализаций абстрактного класса? В чем профит?

private static int binarySearch(int[] sortedArray, int value, int low, int high) { ... }

Что за параметры low и high и зачем они в данном примере? Ведь в linearSearch нет таких параметров.

И вместо "Сортировка выбором" у вас функция linearSearch.

А как за сам ChatGPT платить?

Подскажите, как с токенов JaCarta скопировать?. Вариант с CertFix.exe не подходит

Очень спорное утверждение про Java/C#. Может для бизнес логики больше подходит 1с? Ведь именно в конфигурациях 1с работают сотни тысяч организаций по всей России.

Логика тех кто там работает.

Их не устраивали условия в России и они уехали в другую страну, не стали бороться за улучшение условий в России. Теперь для них история повторяется: их не устраивают условия работы в организации, следовательно они должны уйти в другую организацию.

192 ТК РФ. Когда выговоров и замечаний накопилось два или больше, работника можно уволить. Основание называется «за неоднократное неисполнение работником без уважительных причин трудовых обязанностей».

Зачем терпеть, не рабство же. Просто уходите на другую работу, если эта не устраивает.

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

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

Можно ли ставить любые сторонние приложения apk?

На днях гуляли с ребёнком в коляске, так я больше носил коляску по лесницам, чем катал. Никаких пандусов нет нигде, тротуары узкие, съездов для колясок нет. Как передвигаются маломобильные граждане непонятно. Светофоров мало, в основном нерегулируемые пешеходные переходы через 4 полосы с интенсивным быстрым движением.

Всё заставлено машинами, припарковаться очень сложно, т.к. нет мест. Во дворах парковок практически нет, на 25 этажный дом может быть парковка на 20 машин. Знаки не соответствуют движению по дороге. Например стоит знак что дальше прямо ехать нельзя, только направо. При этом все едут прямо, т.к. там продолжение дороги. Ехал по односторонней дороге вдоль Спортивной набережной и оказался на встречке, т.к. внезапно, без всяких знаков, дорога стала двусторонняя. Многие местные ездят так как будто сами не понимают как и куда ехать.

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

Информация

В рейтинге
3 625-й
Откуда
Хабаровск, Хабаровский край, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer, 1C Developer
Lead
От 300 000 ₽
Rust
Golang
Kotlin Multiplatform
DevOps
Development management
Optimization of business processes