看看编辑器支持哪些常用的Markdown语法高亮(下)
Kotlin(标签:kotlin)package com.codelearning.vulkaninfo import android.Manifest import android.content.ClipData import android.content.ClipboardManager import android.content.Context import android.content.pm.PackageManager import android.content.res.AssetManager import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.Environment import android.util.Log import com.codelearning.vulkaninfo.databinding.ActivityMainBinding import java.io.IOException import java.io.RandomAccessFile import java.nio.charset.StandardCharsets private external fun doVulkanWork(assetMgr: AssetManager, logBuffer: ByteArray): Int class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding private var m_isVulkanAvailable = true override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) // Example of a call to a native method binding.sampleText.text = stringFromJNI() if(binding.sampleText.text.contains("Failed", true)) { m_isVulkanAvailable = false } binding.runVulkanButton.setOnClickListener { if(!m_isVulkanAvailable) return@setOnClickListener val logBuffer = ByteArray(10 * 1024 * 1024) val dataLen = doVulkanWork(assets, logBuffer) val logStr = String(logBuffer, 0, dataLen, StandardCharsets.UTF_8) val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager val clipData = ClipData.newPlainText("vulkaninfo", logStr) clipboard.setPrimaryClip(clipData) binding.sampleText.text = resources.getString(R.string.contents_are_copied) if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { requestPermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), 101) } val file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS) ?: return@setOnClickListener try { val filePath = file.absolutePath + "/vulkan_info.log" Log.i(null, "The file path to be saved: $filePath") val fileAccess = RandomAccessFile(filePath, "rw") fileAccess.write(logBuffer, 0, dataLen) fileAccess.close() } catch (e: IOException) { Log.i(null, "File write error: ${e.localizedMessage}") } binding.sampleText.text = resources.getString(R.string.file_is_saved) } } /** * A native method that is implemented by the "vulkaninfo" native library, * which is packaged with this application. */ external fun stringFromJNI(): String companion object { // Used to load the "vulkaninfo" library on application startup. init { System.loadLibrary("vulkaninfo") } } }Lua(标签:lua)print"Hello, Lua!" function test_func() local num = 0 return function() num = num + 1 return num end endMakefile(标签:makefile)all: main.o module.o gcc main.o module.o -o target_bin main.o: main.c module.h gcc -I . -c main.c module.o: module.c module.h gcc -I . -c module.c clean: rm -rf *.o rm target_binMetal Shading Language(标签:metal)// 控制点结构体 struct ControlPoint { float2 position [[ attribute(0) ]]; float4 color [[ attribute(1) ]]; }; // Patch结构体 struct PatchIn { patch_control_point control_points; }; // 顶点着色器输出到片段着色器的结构体 struct FunctionOutIn { float4 position [[ position ]]; half4 color [[ flat ]]; }; // 三角形细分曲面后处理顶点着色器 [[ patch(triangle, 3) ]] vertex struct FunctionOutIn triangle_vertex(struct PatchIn patchIn [[stage_in]], float3 patch_coord [[ position_in_patch ]]) { float u = patch_coord.x; float v = patch_coord.y; float w = patch_coord.z; // 将当前控制点坐标(u, v, w)通过线性插值转换为笛卡尔坐标(x, y) float x = u * patchIn.control_points[0].position.x + v * patchIn.control_points[1].position.x + w * patchIn.control_points[2].position.x; float y = u * patchIn.control_points[0].position.y + v * patchIn.control_points[1].position.y + w * patchIn.control_points[2].position.y; // 顶点输出 struct FunctionOutIn vertexOut; vertexOut.position = float4(x, y, 0.0, 1.0); vertexOut.color = half4(u, v, w, 1.0); return vertexOut; } // 四边形细分曲面后处理顶点着色器 [[ patch(quad, 4) ]] vertex struct FunctionOutIn quad_vertex(struct PatchIn patchIn [[stage_in]], float2 patch_coord [[ position_in_patch ]]) { // 从tessellator处理之后所获得的规格化之后的控制点坐标—— // uv坐标的原点(即(0, 0)的位置)是在原patch的左下顶点 float u = patch_coord.x; float v = patch_coord.y; // 以下通过线性插值的算法将规格化后的控制点坐标再转换为相对于输入顶点的坐标 float2 lower_middle = mix(patchIn.control_points[0].position.xy, patchIn.control_points[1].position.xy, u); float2 upper_middle = mix(patchIn.control_points[2].position.xy, patchIn.control_points[3].position.xy, 1-u); // 顶点输出 struct FunctionOutIn vertexOut; vertexOut.position = float4(mix(lower_middle, upper_middle, v), 0.0f, 1.0f); vertexOut.color = half4(u, v, 1.0f - v, 1.0h); // 靠左下的所有顶点使用原patch左下顶点的颜色 if(u < 0.5f && v < 0.5f) { vertexOut.color = half4(patchIn.control_points[0].color); } // 靠右下的所有顶点使用原patch右下顶点的颜色 else if(u > 0.5f && v < 0.5f) { vertexOut.color = half4(patchIn.control_points[1].color); } // 靠右上的所有顶点使用原patch右上顶点的颜色 else if(u > 0.5f && v > 0.5f) { vertexOut.color = half4(patchIn.control_points[2].color); } // 靠左上的所有顶点使用原patch左上顶点的颜色 else if (u < 0.5f && v > 0.5f) { vertexOut.color = half4(patchIn.control_points[3].color); } return vertexOut; }NASM(标签:nasm); 这是一个汇编文件 ; YASM的注释风格使用分号形式 global MyASMTest section .text MyASMTest: sub edi, esi mov eax, edi retObjective-C(标签:objectivec)@import Foundation; int main(void) { @autoreleasepool { NSLog(@"Hello, this is a modern Objective-C 2.0 program!"); unichar c = u"加"; NSLog(@"The character is: %C", c); } }OpenCL(标签:opencl)kernel void solve_sum( global unsigned buffer[512], global unsigned dest[512] ) { local volatile int flag = 0; size_t gid = get_global_id(0); const uint4 value = (uint4)(1, 2, 3, 4); if(0 <= gid && gid < 32) { while(flag == 0); vstore4(value, gid, buffer); //write_mem_fence(CLK_GLOBAL_MEM_FENCE); flag = 0; } else if(32 <= gid && gid < 64) { flag = 1; while(flag == 1); unsigned ret = buffer[127 + 32 - gid]; dest[gid - 32] = ret; } }PHP(标签:php)<?php echo("Hello PHP!"); ?>Python(标签:python)hello = 10 if hello == 10: print("This is a Python program") lam1 = lambda x,y: x + y lam2 = lambda lam: lam(20, 10) * 2 lam3 = lambda x, y: x + (lambda a: x * a)(hello) - y lam4 = lambda x: lambda y: y / x print(lam1(100, hello)) print(lam2(lam1)) print(lam3(4, 5)) print(lam4(2)(8))Rust(标签:rust)fn main() { println!("This is a Rust program!"); let a = "Hello A!"; let b = "Hello B!"; println!("{} {}", a, b); }Scheme(标签:scheme)(define x 2) ;Value: x (+ x 10) ;Value: 12 (define y (/ 3 2)) ;Value: y (+ y 0.5 x) ;Value: 4. (+ y 0.1) ;Value: 1.6Swift(标签:swift)class ViewController: NSViewController { override func viewDidLoad() { super.viewDidLoad() // 由于myMethod方法被重载, // 因此这里对funcRef显式指定类型来指明指向不带任何参数的myMethod方法 let funcRef: () -> Void = self.myMethod funcRef() // 或者可以这么写:直接显式地在方法名后添加上类型 let funcRef2 = self.myMethod as () -> Void funcRef2() // 这里使用方法签名myMethod(a:)来指明metohdRef指向myMethod(a a: Int)方法, // 而methodRef的类型被推导为:(a: Int) -> Void var methodRef = self.myMethod(a:) methodRef(a: 100) methodRef = self.myMethod(_:) methodRef(a: 200) // 这里即便有一个a:标签也无所谓,调用的仍然是myMethod(_:)方法 // 各位请注意,这里的mref的类型为:(_: Int) -> Void // 注意,其形参不含外部标签 var mref = self.myMethod(_:) mref(10) // 这里又指向了myMethod(a: Int)方法 mref = self.myMethod(a:) mref(20) // 仅管这里没有标签,但调用时仍然调用的是myMethod(a: Int)方法 /** 上述是隐式地做类型推导,而下面我们可以用显式的类型指定 */ // 显式指明ref是一个带有含外部标签b的形参的方法引用 let ref: (b: Int) -> Void = self.myMethod(a:) ref(b: 30) /** 以下是对应的selector的描述 */ var sel: Selector = #selector(self.myMethod(a:)) sel = #selector(self.myMethod(_:)) // 对于不带参数的方法,被用作selector时,必须在后面显式地加上函数类型 sel = #selector(self.myMethod as () -> Void) } func myMethod() { print("My method!") } func myMethod(a a: Int) { print("Method2 value = (a)") } func myMethod(_ a: Int) { print("Method3 value = (a)") } override var representedObject: AnyObject? { didSet { // Update the view, if already loaded. } } }
以上编程语言的代码语法高亮都支持得不错,后续可以考虑直接在头条上发博文了~
帽天山开拓虾!这只5亿多年前的海洋霸主有了名字记者从中国科学院南京地质古生物研究所获悉,该所古生物学者重新研究了我国澄江动物群中的一块标志性奇虾化石,发现这只明星奇虾形态奇特,不同于已经命名的奇虾类群。科研团队为其建立了一个新
2022年新生儿爆款名字公布!最热门的是从王者荣耀到李不尚书再到陈皮话梅糖年年都有火出圈的名字而且花样还越来越多近日广东佛山市公安局云南警方公布2022年新生儿热门名字佛山经过统计佛山市公安局正式公布佛山地区2022年新
年味飘香备下过年菜肴寄托美好寓意央视网消息(记者赵晋报道员卫学超)春节将至,在安徽马鞍山当涂县姑孰镇,当地人已经开始为过年准备年货忙碌起来,炸肉圆子炒八宝菜打年糕灌香肠晒咸货刻羊羔处处飘着年味。肉圆子八宝菜是本地
票数碾压!朱婷MVP遥遥领先,有望斩获荣誉,遇尴尬名字错了朱婷在加盟到斯坎迪奇之后的表现越来越好,她率领球队已经升至第二名,同时还送给了科内利亚诺赛季首败,打破对手的全胜金身。依靠着出色的表现,朱婷成功入选了意大利女排甲级联赛公布了12月
换名字反复上1818黄金眼?它又改名了?!邱先生反映,前段时间买了一只小狗,店家说是纯种边牧。现在他觉得,小狗不是纯种的。1818黄金眼高端萌宠保证纯种,鉴定52要认公章邱先生这家店是当时我老婆在淘宝上面,搜索杭州的正规的
生在广州的他,活成了自己想要的样子人生中会有各种各样的人会告诉你你应该这么做你才能有所获。你这一切都是为了自己不是做给我看的。耳熟能详的话语。没错!这就是父母朋友老师口中常说的话。他们总是会用他们的方式引导我们走向
猪说我想活出不同的样子,甚至死法也不一样我曾经在一个养猪场里的工作过,那年我十六岁,对这个世界一无所知,却充满愤怒。我每天的工作就是给猪们喂食,清理猪圈。坦白而言,这是一份很糟糕的差使。除了猪圈里的脏臭以及每天超长的工作
你若美好,才值得拥有美好世间一切美好的人和事物都是那么的令人心旷神怡,心向往之。我们生活的意义,从某种程度上来说就是一个追求美好的过程。学习上的成绩,工作中的成就,收获到的美好的友情,爱情等等,这些不都是
嗜酒的韩国人推出自动烧酒机,让喝酒也有仪式感极爱嗜酒的韩国,烧酒属于必不可少之饮品,日前有品牌竟然推出自动烧酒机,只要打开烧酒装上专属仪器,杯子一靠近,就会自动感应供应烧酒,令酒鬼爱不释手。其浅蓝色设计呼应着品牌推出的烧酒瓶
演员王姬,婚姻美满,儿女双全,堪称人生赢家能够嫁给初恋,是一件无比幸福的事情,王姬就是那个幸运儿。一提起这个名字,脑海中就会闪现出她的样子,浓眉大眼并且很有韵味,简直就是天生的美人胚子。王姬是北京人,虽然家境普通,但是父母
人生经历的每一个寒冬,都是一次升级进阶,请一定要扛住今年的冬天真是煎熬,疫情肆虐,企业裁员,街上的门店纷纷闭店,收入大幅度减少,突然感慨,活着好难。随着年龄的增长,肩上的责任愈加的重,上有老下有小,面对艰难的环境,每天工作都变得小心