学习着色器Shader - GLSL

输入与输出 Uniform(随时间变化) 更多属性 然后就是Shader类,这个最后我生成的如上所示 因为需要读取shader文件,这里不想使用绝对路径的,可以自己设置一下Xcode的Working Directory 在Product->Scheme->Edit Scheme,下面是我的设置。根据你自己的项目所在路径进行设置。

September 5, 2022 · 1 min · Loyio Hex

Learn OpenGL - Hello Triangle (M1Pro 环境环境配置)

虽然说苹果之前已经说弃用OpenGL了,全部改用Metal,但目前还是自带OpenGL库的 首先开始是环境的配置,我这里直接放弃了使用CMake,又重新把Xcode装了回来。 首先安装glfw,glew brew install glfw brew install glew 然后使用brew info ***就可以查看安装的具体路径在哪里,后续需要用到 然后是glad,进入网站gl我选择的是3.3,然后Profile设置为Core,下面注意是否勾选了Generate a loader,然后生成即可,然后我把下载下来的include里面的文件夹放到了/usr/local/include这个目录,后续也需要用到。 打开Xcode,新建一个C++命令行项目,在target项目设置哪里,选择Build Settings找到Header Search Paths(在Search Paths下面),添加两个路径,一个就是homebrew的头文件的路径,另一个就是local的头文件路径,以下仅供参考 /opt/homebrew/include /usr/local/include 然后在进入Build Phase,开始配置链接库,如下图所示 上面两个的路径就是homebrew安装库的路径,这些dylib文件就在这个文件夹下面,我上面截图用红框框住的。下面两个就是自带的直接选就行了 然后记得把之前glad生成文件src下面的glad.c文件复制进来。 注意事项 Mac 苹果芯片环境,需要注意下面几点,首先在申明的时候,需要设置GLFW_OPENGL_FORWARD_COMPAT,教程里面也说了 #ifdef __APPLE__ glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); #endif 然后就是在创建窗口之后需要再加上这么一行 #ifdef __APPLE__ glfwMakeContextCurrent(window); #endif 然后还有就是可能会报这么一个错 需要禁止Library的验证,如果没有Hardened Runtime这个,点击左上角的+ Capability即可 当改完之后,可能还会报这么一个错 这时候选择执行Product下面的Clean Build Folder就可以了 效果展示 三角形 矩形 矩形(线框模式) 更多顶点

September 4, 2022 · 1 min · Loyio Hex

直面差距,虚心求教 --- 流水账

工作两个月了,基本没有时间去停下来好好思考一下目前的一个状态,以及之后的一个规划。 这周五在组长那里学到了很多,聊了也差不多一个小时,基本上我是一个啥也不会的状态,组长也在不停的迁就我,引导我如何去学习。 想想如果还是这样的状态,必定走不远。也是时候认真起来了。 第一个月 本人就是一个非常普通的人,来自普通的学校,能力也很普通,误打误撞进了公司,然后接触了自己并不是很熟悉的行业,组里的规划还是很清晰的,一开始就是让做一个小项目,穿插着进行一些学习计划。但基本上工作日能用来学习的时间我根本挤不出来。我总是太专注于某一件事,而不想着从多个方面去提升自己。 导师还是非常负责的,从一开始做需求分析、项目设计文档的时候,就是改了一版又一版,本以为软件工程的知识以后用到的情况会很少,程序员就蒙头写代码就行了,然而实际上文档必不可少,一开始,我连鲁棒图是啥都不记得了,设计模式该如何正确选择也摸不清头脑。还是导师一步一步带我重新回顾需求分析与设计的核心,还学到了一个重点,就是这一切的一切都是为了让自己不背锅。 我之前的想法基本上都是走一步看一步,不会关注于规划上,程序开发中,只是会在开始时想一下要做一个什么样的效果,而对于设计,总是迷茫的,遇到一个问题解决一个问题。这或许也就跟我的大学生活是一样的,总是看到什么觉得挺感兴趣的,然后就会在之后一段时间里去做这件事。从一开始的前端框架,再到Java, .NET,然后到是Python语言,逐渐接触到机器学习知识,后面又学了Swift做iOS、Mac应用,再到最后又回归本心,用C++刷算法题,重新喜欢上使用C++,当前中间也不知道经历过多少个其他的想法,参加过微信小程序比赛、设计过CPU MIPS流水线、试着自己从零写一个操作系统等。当然很多都是浅尝辄止。(当然我指的这些不是说大学专业课程的那些要求) 这样也就导致啥都接触过一点,会一点,但一直没找到自己真的擅长的、喜欢做的。我这没有规划的人生就如shit一般。虽然可能在我的一些同学中,他们都会觉得我怎么啥都会,但实际上人生如戏,我只是扮演着这么一个角色。 回到工作上,开发的过程中,实际上也越到过很多问题,我的导师是要求我必须每天开发出来其中一个部分,然后给他测试,实际上,我根本没法在一开始就考虑所有情况,往往是一部分还没有非常完善就转向下一部分,这与我导师的想法是背道而驰,做一个功能就一定要把这个功能做到极致,完美贴合需求。而我是想着是在开发过程中,开发当前模块时,也不断的完善之前的模块,思考之后的模块。我的很多观念,有时候我自己也找不出原因,而我又是一个极端固执的人,这个习惯必须得改。 跳到最后,导师检查的时候,我发现我的导师对我的要求总是要比其他新入职的员工高,同时这也是一个导师考核制度,需要导师打分,明明大家都不需要完成的一个需求,到我这就变成了一个考核项,导师测试的时候,遇到一个bug,然后就会打回去让我改,改完之后才继续进行测试。这样的效率是非常低的,本来一个一天就能测完的,大概又要花一两周。不过听他说这是在给我机会,测出来的bug越多,自然分数就越低。所以自测必须要非常仔细,然而我的导师总是有非常多新颖的测试用例。 我也与导师争论过,当时一个需求,我觉得就很奇怪,我也问了其他同期入职做新人项目的,他们都没这要求,然而让我必须完成这个,不然又要扣分,当时想着,这种机制很不公平,想要报告给组长,不过这种行为实在太幼稚了,我想想都觉得好天真啊。每个导师都有自己的一个想法,有自己的一套理念,各有各的好处吧。就这样吧,关于这个新人项目就讲到这里。 正式接触工作 一开始都是一些修改bug的任务,分析需求,从代码中找出出现问题的地方,然后进行修改。后续又做了一个工具,本以为能够很快的做出来,然而对于框架不太熟悉,也花了一段时间。

September 3, 2022 · 1 min · Loyio Hex

Aftership后端校招春招笔试

投了Aftership的后端开发,进了笔试,发了一个链接,是可以任意时间开发做的,只要在五天之内就行。 昨天下午空闲的时候做的。 选择题 首先是30道选择题,考的基础知识都挺扎实的,我感觉都是牛客上的原题吧。有五六道题不会吧。 算法题 然后是两道算法题, 第一道算法题送分题,判断两棵二叉树是否相同,就是一个遍历,同时对比结点的值,只要有不同就返回false。 第二道题输入是给了一个字符串,由数字组成,用空格隔开,比如"12 34 234 23 66", 给了这么一个概念,数字的权重是数字的各位相加得到的值,比如99的权重是18。 需要计算字符串中每个数字的权重,然后在字符串找到符合下面条件的两个数字 两个数字权重的差最小 然后数字的权重也要最小 数字的下标也要最小,下标是从0开始 然后就是输出,两个数字组成的数组,子数组的格式如下 [权重,下标,数字值] 然后子数组也要有顺序,首先按权重,如果权重相同,那么就按索引,都是升序的。 好像输出的时候也是要求必须是字符串,大致格式如下,具体我也不太记得了 "[[10, 1, 143][10, 6, 88]]" 我的做题思路是,首先因为都是字符串,肯定得先把字符串中解析成一个整数数组,然后应该就是动态规划了,从前往后,选择最优的两个数字。 结果 今天早上的时候就收到了感谢信,Aftership效率还是挺高的。 可能是没有HC了吧,然后我看后端主要也是用Golang,今天打开官网,发现就只招算法工程师了

March 24, 2022 · 1 min · Loyio Hex

小红书后端开发春招笔试

选择题 数据库事务的四大特性 事务的四大特性主要是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 产生死锁的四个必要条件 互斥条件、不剥夺条件、请求并保持条件、循环等待条件 给你一个入栈序列,问有多少种出栈可能 卡特兰数,如有$n$ 个入栈,那么出栈有 $\frac{1}{n+1}C_{2n}^{n} = C_{2n}^{n}-C_{2n}^{n+1}$ 种可能,1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, … 楼梯有9个台阶,每次只能走1个或2个台阶,有多少种走法。 斐波那契数列,1, 2, 3, 5, 8, 13, 21, 34, 55 算法题 给你一个由0和1组成的数组,你可以有一次翻转区间的机会,即将1变成0,将0变成1,问此数组中1最多能有多少个。 给你一张 $M \times N $的地图,然后还会有 $K$ 个障碍(障碍坐标已给出),每次只能向右或者向下移动,从地图的左上角到达地图的右下角,问一共有多少种走法。 最大礼物价值。

March 13, 2022 · 1 min · Loyio Hex