Forwarded from duangsuse::Echo (duangsuse)
上等讨论是交流观点,中等讨论是谈论事件,低等讨论是评判个人。
——浅谈价值表达
——浅谈价值表达
浅谈价值表达
浅谈价值表达 | 小胡子哥的个人网站
还记得刚踏入职场时,最大的困惑是不清楚未来的成长路径是怎样的,在职场上,我的未来是什么?未来的路该怎么走?业界的那些大牛,到底有多牛?我离他们有多远?对此完全没有概念。
Forwarded from duangsuse::Echo (duangsuse)
#pragma once
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow: public QMainWindow { Q_OBJECT
public:
MainWindow(QWidget* parent = nullptr);
~MainWindow();
private slots:
void onShowToastClicked();
void onShowProgressSpinnerClicked();
void onShowProgressHorizontalClicked();
private:
Ui::MainWindow* ui;
}; 🤔 很久没写 Qt 了,应该默写下这个GitHub
duangsuse-valid-projects/Qt-Qt5-Widgets-Intro
:thinking:. Contribute to duangsuse-valid-projects/Qt-Qt5-Widgets-Intro development by creating an account on GitHub.
Forwarded from dnaugsuz
是啊,
#pragma once
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow: public QMainWindow {
public:
MainWindow(QWidget* parent = null);
~MainWindow();
private slots:
void onShowToast();
void onShowProgressBar();
void onShowHorizontalProgress();
private:
Ui::MainWindow* ui;
}Forwarded from dnaugsuz
extern crate azul;🤔 Rust 怎么那么喜欢用 optional value 啊……
use azul::{ prelude::*, widgets::{ label::Label, button::Button } };
struct DataModel {
counter: usize
}
impl Layout for DataModel {
fn layout(&self, _info: LayoutInfo<Self>) -> Dom<Self> {
let label = Label::new(format!("{}", self.counter)).dom();
let btn_inc = Button::with_text("+1").dom().with_callback(On::MouseUp, Callback(onIncClicked));
Dom::div().with_child(label).with_child(btn_inc)
}
fn onIncClicked(info: CallbackInfo<DataModel>) -> UpdateScreen {
info.state.data.counter += 1
Redraw
}
}
fn main() {
let mut app = App::new(DataModel { counter = 0 }, AppConfig::default()).unwrap();
let win_main = app.create_window(WindowOptions::default(), css::native()).unwrap();
app.run(win_main).unwrap()
}
Forwarded from dnaugsuz
可是虽说“理论上”是这样,真正实现这个东西的也就是“脚本语言”了(但我也不喜欢它们的另一些特质),说得到做不到的事情多了。
duangsues.is_a? SaltedFish
然后Adapter就写了个这
enum Mode { NORMAL, DELETE } //< 有必要?
public class ModListAdapter extends BaseDynmaicGridAdapter {
private Mode mode = NORMAL;
public ModeListDynamicGridViewAdapter(Context ctx) { super(ctx, new ArrayList<>(), 1); }
@Override
public View getView(int position, View view_convert, Group parent) {
ModViewHolder holder;
if (view_covert != null) { holder = (ModViewHolder) view_convert.getView();
else {
View convertView = LayoutInflater.from(getContext()).inflate(R.layout.mod_item, null); //TODO: use overloads
holder = new ModViewHolder(contentView);
convertView.setTag(holder); //TODO extract (new ViewHolder) + View.setTag
}
view_convert/*merge...*/.setOnTouchListener((v, event) -> {
if (mode == Mode.REMOVE && (event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_DOWN) { // TODO: extract getAction()&ACTION_MAST
TextView tvTitle = v.findViewById(R.id.mod_item_title);
Switch enable = v.findViewById(R.id.mod_item_enabled);
GoodmodEntry entry = (GoodmodEntry) getItem(position);
boolean toRemove = !entry.isToRemove();
entry.setToRemove(toRemove);
tvTitle.setTextColor(toRemove? Color.RED : enable.isEnabled()? Color.BLACK : Color.GRAY);
return true;
} else return false;
});
holder.build((GoodmodEntry) getItem(position));
return view_convert;
}
}Forwarded from dnaugsuz
草,如此模板化的代码你都不用 IDEA 功能抽提的么
fun boilerplate(menuId: Int, navControllerId: Int) {
navigation.menu.clear()
menuInflater.inflate(menuId, navigation.menu)
navController.graph = navController.navInflater.inflate(navControllerId)
} when (booru?.type) {
Booru.SANKAKU -> boilerplate(R.menu.navigation_sankaku, R.navigation.main_navigation_sankaku)
Booru.GEL -> boilerplate(R.menu.navigation_gel, R.navigation.main_navigation_gel)
null -> boilerplate(R.menu.navigation, R.navigation.main_navigation)
}Forwarded from dnaugsuz
如果你是想实现客户端“可信计算”,可能木有了。
如果你的模块解耦足够好(加密存储是抽象的,接口和普通存储没有任何区别),那么你可以延续现有的操作
否则我建议直接削掉
上面也说了,有 root 直接读内存甚至 call 你自己的 JNI exports (甚至没存符号表的 C/++ 函数都能给你找出来),
无 root Xposed 都可以 hook 拿到你解密出的数据
计算设备是别人的,理论就没有绝对的安全,所以要么放服务器要么不放
如果你的模块解耦足够好(加密存储是抽象的,接口和普通存储没有任何区别),那么你可以延续现有的操作
否则我建议直接削掉
上面也说了,有 root 直接读内存甚至 call 你自己的 JNI exports (甚至没存符号表的 C/++ 函数都能给你找出来),
无 root Xposed 都可以 hook 拿到你解密出的数据
计算设备是别人的,理论就没有绝对的安全,所以要么放服务器要么不放
Forwarded from dnaugsuz
🤔 三级缓存?我只知道 LRU 缓存
缓存不是一级已经够了吗…… 难不成你写一个
缓存不是一级已经够了吗…… 难不成你写一个
repeat(10) { println() } 还用递归来着Forwarded from dnaugsuz
举个例子,某回合塔防游戏把一局的“金钱”数存在 JNI 里并且只有进行加减法时解密。
但这个游戏还是被 dalao 破解了,教程也很容易看——因为加密算法是 consistent,一致也即同输入一定同输出的,所以先弄到教程指定的“金钱”,然后再拿修改器搜内存,两次确定,锁一下数值就可以直接给破解了。
但这个游戏还是被 dalao 破解了,教程也很容易看——因为加密算法是 consistent,一致也即同输入一定同输出的,所以先弄到教程指定的“金钱”,然后再拿修改器搜内存,两次确定,锁一下数值就可以直接给破解了。
Forwarded from dnaugsuz
奇怪的知识增加了
我只知道会用内存缓存(这个对应用开发者理应是透明的)
和本地文件缓存
我只知道会用内存缓存(这个对应用开发者理应是透明的)
和本地文件缓存