ad reiwa heisei showa
---- ------- -------- -------
2023 5 (35) (98)
2022 4 (34) (97)
2021 3 (33) (96)
2020 2 (32) (95)
2019 1 31 (94)
2018 30 (93)
2017 29 (92)
2016 28 (91)
2015 27 (90)
2014 26 (89)
2013 25 (88)
2012 24 (87)
2011 23 (86)
2010 22 (85)
2009 21 (84)
2008 20 (83)
2007 19 (82)
2006 18 (81)
2005 17 (80)
2004 16 (79)
2003 15 (78)
2002 14 (77)
2001 13 (76)
2000 12 (75)
1999 11 (74)
1998 10 (73)
1997 9 (72)
1996 8 (71)
1995 7 (70)
1994 6 (69)
1993 5 (68)
1992 4 (67)
1991 3 (66)
1990 2 (65)
1989 1 64
【IDEA】Python Code Style インデントをスペース2 に設定する
Editor
の反応を スペース2
仕様にする。
Setting
↓
Editor
↓
Code Style
↓
Python
Tabs and Indents
のタブから 4 → 2
, 8 → 4
に変更。
IDEA の 文法チェック周りを調整する。
Setting
↓
Editor
↓
Inspections
↓
PEP8 coding style Violations
Options Ignore error
に E111
, E114
を追加する。
E111 indentation is not a multiple of four
E114 indentation is not a multiple of four (comment)
👉 Introduction — pycodestyle 2.7.0 documentation
👉 【Pythonコーディング規約】PEP 8 vs Google Style - Qiita
👉 styleguide | Style guides for Google-originated open-source projects
まあ、しかし、スペース 4
のほうが今はまだ主流ですよな。
👉 path:**/setup.cfg flake8 ignore - Code search results · GitHub
👉 Flake8: Your Tool For Style Guide Enforcement — flake8 6.0.0 documentation
【IDEA】Python Code Style インデントをスペース2 に設定する https://t.co/oV3u1lxUQx #python #pep8 #プログラミング #idea #pycharm
— chanzmao (@maochanz) December 28, 2022
dyn4j の実力を JetpackCompose wrapper Physics Layout で思い知る
やはり Java のライブラリ群を使えることは素晴らしいことです。
以下、サンプルコードを参考に Activity を書き換えます。
👉 KlassenKonstantin/ComposePhysicsLayout: A custom Compose layout backed by a physics engine
class MainActivity : ComponentActivity() {
@SuppressLint("SourceLockedOrientationActivity")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
setContent {
PhysicsLayoutTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
val simulation = rememberSimulation()
val balls = remember { mutableStateListOf<BallMeta>() }
GravitySensor {
simulation.setGravity(it.copy(x = -it.x).times(3f))
}
LaunchedEffect(Unit) {
var i = 0
val count = colors.count()
while (true) {
balls.add(BallMeta(color = colors[i % count]))
delay(100)
i++
}
}
LaunchedEffect(Unit) {
delay(5000)
while (true) {
balls.removeFirst()
delay(100)
}
}
Box {
PhysicsLayout(
modifier = Modifier.systemBarsPadding(),
simulation = simulation
) {
Block( 0, -200)
Block(-125, -100)
Block( 125, -100)
Block( 0, 0)
Block(-100, 100)
Block( 100, 100)
Block( 0, 200)
balls.forEach { meta ->
Ball(0, -350, meta = meta)
}
}
}
}
}
}
}
}
@Composable
fun PhysicsLayoutScope.Block(x: Int, y: Int) {
val offset = offsetDp(x, y)
Card(
modifier = Modifier
.body(
isStatic = true,
initialTranslation = offset
)
) {
Spacer(
modifier = Modifier
.size(62.dp)
.background(color = Color.Gray)
)
}
}
@Composable
fun PhysicsLayoutScope.Ball(x: Int, y: Int, meta: BallMeta) {
val initialOffset = offsetDp(x, y)
Card(
modifier = Modifier.body(
id = meta.id,
shape = RoundedCornerShape(meta.corner),
initialTranslation = Offset(initialOffset.x, initialOffset.y),
initialImpulse = Offset((Random.nextFloat() - 0.5f) * 2, (Random.nextFloat()) * 2),
),
shape = RoundedCornerShape(meta.corner),
colors = CardDefaults.cardColors(containerColor = meta.color)
) {
Icon(
modifier = Modifier
.size(32.dp)
.padding(4.dp),
imageVector = Icons.Rounded.Rocket,
contentDescription = null,
tint = Color.White
)
}
}
@Composable
fun offsetDp(x: Int, y: Int) = with(LocalDensity.current) { Offset(x.dp.toPx(), y.dp.toPx()) }
@Immutable
data class BallMeta(
val id: String = System.currentTimeMillis().toString(),
val color: Color,
val corner: Int = listOf(0, 50).shuffled()[0]
)
private val colors = listOf(
Color(0xFFEF5350), Color(0xFFEC407A), Color(0xFFAB47BC), Color(0xFF7E57C2),
Color(0xFF29B6FC), Color(0xFF26C6DA), Color(0xFF26A69A), Color(0xFF66BB6A),
Color(0xFF9CCC65), Color(0xFFD4E157), Color(0xFFFFEE58), Color(0xFFFFCA28),
Color(0xFFFFA726), Color(0xFFFF7043), Color(0xFF8D6E63), Color(0xFFBDBDBD),
Color(0xFF78909C)
)
強力です。
👉 dyn4j
👉 【Jetpack Compose】dp / px / sp の相互変換