У меня есть измененный конфиг docker’a. При обновлении пакетов, конфиг докера меняется на дефолтный. Думаю, может есть какая-то система хуков в дебиане, чтобы если обновляется какой-то пакет, внутри хука выполнить команду(sed), чтобы зареплейсить строку конфига
Если вы привыкли использовать одно имя, то добавьте this
class WildCat(name: String, weight: Int, breed: String){
val this.name = name
var this.weight = weight
val this.breed = breed
}
> Task :app:compileDebugKotlin FAILED
e: /home/user/media/source_project/socialkotlin/app/src/main/java/com/example/socialkotlin/MainActivity.kt: (26, 9): Type expected
e: /home/user/media/source_project/socialkotlin/app/src/main/java/com/example/socialkotlin/MainActivity.kt: (27, 9): Type expected
e: /home/user/media/source_project/socialkotlin/app/src/main/java/com/example/socialkotlin/MainActivity.kt: (28, 9): Type expected
e: /home/user/media/source_project/socialkotlin/app/src/main/java/com/example/socialkotlin/MainActivity.kt: (26, 21): Extension property cannot be initialized because it has no backing field
e: /home/user/media/source_project/socialkotlin/app/src/main/java/com/example/socialkotlin/MainActivity.kt: (27, 23): Extension property cannot be initialized because it has no backing field
e: /home/user/media/source_project/socialkotlin/app/src/main/java/com/example/socialkotlin/MainActivity.kt: (28, 22): Extension property cannot be initialized because it has no backing field
e: /home/user/media/source_project/socialkotlin/app/src/main/java/com/example/socialkotlin/MainActivity.kt: (37, 27): Unresolved reference: name
Никому не попадался таймер такой специфики: я нажимаю старт - тикает время. Я нажимаю стоп. Далее я нажимаю на кнопку еще раз - тикает в обратном порядке:
Есть сорсы ядра /usr/src/linux-source-4.19, я накладываю патч и он накладывается с ошибками. Я их исправляю. После того, как я пофиксил ошибки, я хочу сделать патч, который я смогу без проблем наложить в следующий раз. Как это правильно сделать. Итак, есть набор действий:
4. patch -p1 < kernel_gcc_patch/usr/src/kernel_gcc_patch/enable_additional_cpu_optimizations_for_gcc_v9.1+_kernel_v4.13+.patch
5. фиксим ошибки после наложения ядра
6. набор действий, чтобы сделать патч(вопрос топика)
Т.к многие примеры не работают вне контекста андроид приложения, было принято решение разбирать примеры kotlin в контексте андроид приложения. Создал минимальное приложение в андроид студио с mainactivity, которое имеет код
package com.example.socialkotlin
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.activity_main.*
import android.util.Log
// class SomeActivity : Activity(), AnkoLogger {
// private fun someMethod() {
// info("London is the capital of Great Britain")
// debug(5) // .toString() method will be executed
// warn(null) // "null" will be printed
// }
// }
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
Log.d("TAG", "----------------------message")
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
fab.setOnClickListener {
view -> Snackbar.make(
view,
"Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null
).show()
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.menu_main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
return when (item.itemId) {
R.id.action_settings -> true
else -> super.onOptionsItemSelected(item)
}
}
}
Взял тестовый сорс из книги, немного его подрихтовал на запуск 1000 тредов. Запустил, меряю ps_mem -p pid и вижу, что потихонечку память процесса увеличивается. Это нормально или где-то тут протекает? :)
// Create a second thread.
class NewThread implements Runnable {
Thread t;
NewThread(String name) {
// Create a new, second thread
t = new Thread(this, name);
System.out.println("Child thread: " + t);
}
// This is the entry point for the second thread.
public void run() {
try {
// for (int i = 5; i > 0; i--) {
for (int i = 5;; i--) {
System.out.println(Thread.currentThread());
System.out.println("Child Thread: " + i);
Thread.sleep(500);
}
} catch (InterruptedException e) {
System.out.println("Child interrupted.");
}
System.out.println("Exiting child thread.");
}
}
class HelloWorld {
public static void main(String[] args) {
// NewThread nt = new NewThread(); // create a new thread
// nt.t.start(); // Start the thread
for(int x = 0; x <= 1000; x++) {
System.out.println("aaaa");
NewThread nt = new NewThread("some" + x); // create a new thread
nt.t.start(); // Start the thread
}
try {
for (int i = 5;; i--) {
System.out.println("Main Thread: " + i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
System.out.println("Main thread interrupted.");
}
System.out.println("Main thread exiting.");
}
}
Устроился на работу. У компании есть еще один кодер, который работает удаленно. Тот кто работал физически ушел в армию. Говорят: первый месяц 50% от ставки, чтобы типа разобраться с продуктом, потом в штатном режиме 100% ставки. Пожали руки. Работаем. В работе есть несколько задач ёмких, для решения которых нужно сделать определенный комплекс мер. Просто так они не закрываются.
Первый месяц выплачивают, второй месяц работаю выплачивают 50% от зарплаты(аванс). Наступает начало месяца - зарплаты нет. Спрашиваю - говорят будет 5 числа. 5 числа зарплаты нет :). Потом говорят, что моя эффективность неудовлетворительная, что «закрой таски все - мы выплатим зарплату». Коммиты с тем, что я делал - я предоставил. Все аргументы игнорят и говорят «закрой таски». Чтобы закрыть эти таски, нужно потратить 1-1.5 месяца. Вот такая история. Договора не было, официально не устроен. Теперь будем знать, что бывает и такое, лол.
Стандартная схема: нанимаем человека, первый месяц платим ему 20тыс. грн, второй месяц платим 20тыс. грн и шантажируем его, что пока он не закроет все таски - зарплаты не будет. Человек в панике за месяц закрывает таски(зарплату же хочется), ему платят деньги и говорят «прощай», а все мелкие таски будет закрывать кодер на удаленке(которому платят 15тыс. грн). Красота