写在前面
总之是日常学习生活中遇到的一些随身小笔记啦!希望后续有时间记得将这些好好整理整理一下啦!诶嘿嘿小博客要开始动笔动笔啦,云游君赞美赞美!listder酱sukisuki!
料理制作
麻婆豆腐
食材准备
制作一份麻婆豆腐所需食材包括:
- 嫩豆腐、嫩牛肉各一份
- 生姜、大蒜、大蒜叶、小葱、豆瓣酱、豆豉
- 盐、白糖、生抽、老抽、辣椒粉、淀粉水
制作过程
- 取一个嫩豆腐,切成片,切成条,最后切成小方块
- 取一份嫩牛肉,切碎,剁成末,制得牛肉末
- 取5g生姜,切成末
- 取两个大蒜,拍一下,切成末
- 取一段小葱,切成葱花
- 取适量大蒜叶,切成蒜花
- 取一勺豆瓣酱,置于案板上;取少许豆豉,将其与豆瓣酱放在一起,剁碎
- 锅中烧水,加入豆腐焯水,并放入少许盐增加底味,待水沸腾后,倒出控水
- 在锅中倒入少许油,加入牛肉末,进行翻炒
- 炒香后加入葱姜蒜,并加入少许料酒去腥
- 加入豆瓣酱豆豉,继续翻炒
- 炒出红油后加入适量清水
- 加入适量白糖、生抽、老抽
- 加入一勺辣椒粉,搅匀
- 加入焯过水的豆腐,烧制五六分钟
- 分三次加入淀粉水
- 浇洒适量明油,并撒上蒜花
Valaxy
简单命令
新建文章
通过
Git cmd进入到博客根目录下,借由输入命令:
pnpm valaxy new "filename"可以创建新的文章,这里 filename 为新建文章的文件名。例如当我输入:pnpm valaxy new "origami"时,会在 pages/posts/ 目录下新建一个 origami.md 文件
新生成的
.md文件默认具有格式:
---
layout: post
title: origami
date: 2025-01-08 06:05:04
---此格式省略了部分控制参数,实际上我们可以在文件开头写入:
layout: post
title: 祭神纸偶——纸片上的心愿,折纸抽奖小活动!
tags:
- GINKA
- 手工
- 折纸
- 拜年祭
categories: 拜年祭活动
cover: img/origami/cover.png
date: 2025-01-08 06:05:04
top: 3这里
title代表标题,tags代表标签,categories代表文件被归入的文件夹,cover代表封面,其默认路径在public下,data代表文件的创建日期,可自由修改
博客内各文章的排序方式以
top(应取正整数) 为主要关键词,以data为次要关键词
VScode
快捷键
- 在当前文件进行搜索:
Ctrl+F - 注释一段代码:
Ctrl+/ - 跳转至当行内容的末尾
End
python
条件命令
any(iteration)
若
iteration中有至少一个元素为True,则此函数返回True,否则将返回False,例如:
numbers = [0, 1, 2, 3]
has_positive = any(num > 0 for num in numbers)可用于判断 numbers 中是否存在正数,其对偶为:
numbers = [0, 1, 2, 3]
has_positive = not any(num <= 0 for num in numbers)可用于判断 numbers 中是否全为正数
迭代命令
lambda表达式
lambda表达式是Python中用于创建匿名函数的一种方式。匿名函数意味着没有明确的函数名,通常用于一些短小的、只需要用一次的函数。其语法为:
lambda arguments: expression这里 arguments 为函数的传入参数,可以为一个或多个;expression 为一个表达式,用以作为 lambda 的返回值
例如:
words = ['apple', 'banana', 'cherry', 'date']
sorted_words = sorted(words, key=lambda word: word[1])
print(sorted_words) # 输出 ['banana', 'date', 'cherry', 'apple']可用以实现以第二个字符为索引进行排序
由于
lambda只能包含一个表达式,不能包含多行代码,因此它的功能是有限的。所以lambda常与map与fliter结合使用
map
map可用于将指定函数应用于给定可迭代对象(如列表、元组等)的每一个元素,其语法结构如下:
map(function, iterable, ...)这里 function 为一个函数,或者是一个可以接受一个或多个参数的可调用对象;iterable为一个或多个可迭代对象(如列表、元组等);可以传入多个可迭代对象,但 function 需要接收多个参数,以与之一一对应
map()返回的是一个迭代器,只有在实际遍历(如使用list())时才会执行计算。
例如:
numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]
result = map(lambda x, y: x + y, numbers1, numbers2)
print(list(result))fliter
类似于
map(),不过此函数是用于筛选出符合条件的元素,而非对可迭代对象的每个元素应用某个函数;但由于filter()返回的是一个迭代器,故而若想得到可直接访问的数据结构,需结合list()和tuple()使用
例如:
numbers = [-1, 2, -3, 4, -5]
result = filter(lambda x: x > 0, numbers)
print(list(result))zip
用以将多个可迭代对象(如列表、元组、字符串等)按位置打包成元组,返回一个由这些元组组成的迭代器;由于返回值为迭代器,故而常常需要同
list结合使用
使用
*运算符可以“解压”一个由zip()产生的可迭代对象。这样可以将打包好的元组还原成单独的元素,例如:
names = ['Alice', 'Bob', 'Charlie']
scores = [90, 85, 88]
zipped = zip(names, scores)
unzipped_names, unzipped_scores = zip(*zipped)
print(unzipped_names) # ('Alice', 'Bob', 'Charlie')
print(unzipped_scores) # (90, 85, 88)也可利用
zip()来实现矩阵的转置:
matrix = [(1, 2, 3), (4, 5, 6)]
transposed = list(zip(*matrix))
print(transposed)列表生成式
介绍
列表生成式是形如
[expression for item in iteration if condition]这样的命令结构,其相比for循环具有如下优势:
- 列表生成式在内部是一个单一的表达式,它在创建列表时,所有的操作都在一个上下文中完成,减少了上下文切换的开销
- 使用
for循环时,通常需要调用append方法来添加元素,这会涉及到多次的函数调用。而列表生成式直接在内存中构建列表,一次性分配足够的内次,减少了内存分配的次数 - 列表生成式生成的字节码通常比
for循环生成的字节码要少
故而列表生成式一般比 for 循环更高效,这可以通过执行命令:
import timeit
list_comp_time = timeit.timeit('[x**2 for x in range(1000)]', number=10000)
for_loop_time = timeit.timeit('''
squares = []
for x in range(1000):
squares.append(x**2)
''', number=10000)
print(f"列表表达式时间: {list_comp_time}秒")
print(f"for 循环时间: {for_loop_time}秒")得到的运行结果所看出,参考值:列表表达式时间: 0.45448099999885017 for 循环时间: 0.5347337000002881
应用
列表生成式可以用于空数组的生成,例如:
array=[[] for _ in range(0,num)]这会生成一个大小为 num 的列表,列表中的每一个元素均为一个空列表
字符串操作
str(object)
此函数可将整数、浮点数等数据转换成字符串,将
Bool值转换成"True"或者"False"
此函数可将容器对象(如列表、元组、字典)转换成它们的字符串表示
string.strip([chars])
此函数用于去除字符串两端的特定字符,返回值为得到的字符串,不会对原字符串进行修改
chars为可选参数,不传入时此函数将会去除字符串两端的空白字符(如空格、制表符、换行符等);传入时可作为字符集传入,函数将去除字符串两端所有的字符集包含的字符,例如s=string.strip("abc")所得到的字符串两端将不含'a','b','c'
此函数存在衍生函数
lstrip()及rstrip(),各自分别只去除字符串左端和右端的字符
eval(expression, globals=None, locals=None)
此函数可用于执行字符串表达式并返回表达式值,例如:
x = 10
result = eval('x + 5')若传入表达式来自不可信的源,则可能存在安全问题,这时我们可以通过限制可用的全局和局部命名空间,来保证安全性,例如在:
# 创建一个安全的环境
safe_globals = {"__builtins__": None, "abs": abs, "max": max}
safe_locals = {}
# 允许执行简单的数学运算
result = eval("abs(-10) + max(1, 2, 3)", safe_globals, safe_locals)中,便通过将 __builtins__ 设为 None 以禁用内建函数与模块,修补了潜在的安全漏洞
eval()只能用于执行表达式而不能用于执行控制流语句 (如if,while,for等)
文件写入写出
open(file,mode)
file 参数
此函数的
file参数用于传入文件的地址,类型为str,可采用相对路径
- 可使用
open("X.txt",'r'),但不可使用open("\X.txt",'r'),这之中双引号与单引号可相互替换 - 当输入这样的命令时,程序会在当前目录下搜索
X.txt文件并打开
此函数也支持使用绝对路径,但应当注意:
- 若直接复制文件地址作为函数参数传入,会出现 warning。例如当输入:
open("F:\VScode Project\project\Subarray Partition in Array Antenna\The Algorithm X\X.txt",'r')时,会出现提示:
<>:1: SyntaxWarning: invalid escape sequence '\V'
<>:1: SyntaxWarning: invalid escape sequence '\V'
<ipython-input-22-d09f392ca732>:1: SyntaxWarning: invalid escape sequence '\V'
open("F:\VScode Project\project\Subarray Partition in Array Antenna\The Algorithm X\X.txt",'r')- 这是因为路径表达式中的
\与转义字符中的\间存在歧义,对此存在着以下几种解决方案:
- 在字符串前加上字符
r,即改写成:
open(r"F:\VScode Project\project\Subarray Partition in Array Antenna\The Algorithm X\X.txt",'r')- 将
\替换成\\或/,即改写成:
open(r"F:\\VScode Project\\project\\Subarray Partition in Array Antenna\\The Algorithm X\\X.txt",'r')或
open(r"F:/VScode Project/project/Subarray Partition in Array Antenna/The Algorithm X/X.txt",'r')mode 参数
mode用于传入关于打开方式的参数,其有以下几种选择:
r: 只读模式,即默认模式,若文件不存在,会返回No such file or directory错误;若在此模式尝试写入,会返回not writable错误;此模式下指针初始化为在文件的开头w: 写入模式,若文件已经存在,新增内容会覆盖此文件;若文件不存在,则会新建文件后写入;若在此模式尝试读取,会返回not readable错误;此模式下指针初始化为在文件的开头a: 追加模式,若文件已经存在,新增内容会追加到文件末尾;若文件不存在,则会新建文件后写入;若在此模式尝试读取,会返回not readable错误;此模式下指针初始化为在文件的末尾r+: 读写模式,若文件不存在,会返回FileNotFoundError错误;此模式可写入,指针初始化为在文件的开头w+: 写读模式,若文件已经存在,新增内容会覆盖此文件;若文件不存在,则会新建文件后写入;此模式既可读取也可写入,指针初始化为在文件的开头a+: 追加读写模式,若文件已经存在,新增内容会追加到文件末尾;若文件不存在,则会新建文件后写入;此模式既可读取也可写入,指针初始化为在文件的末尾b: 二进制模式,即在读取文件时不对内容进行编码或解码,直接读取二进制值(用r或w打开文件时会默认为文本文件);常和其他模式组合使用,例如:rb,wb等x: 独占创建模式 仅在文件未被创建时可正常运行。若文件已经存在,会返回File exists错误;可用于防止文件内容被覆盖t: 文本模式 即在读取文件时以文本形式进行读取,会进行编码和解码;类似于b二进制模式,常搭配其他模式一同使用,不过实际上t即为 python 中的默认模式
相关函数
当使用
open(file, mode)打开一个文件时,系统会为之分配资源,故而需要使用close()以关闭文件,来释放资源
若写入文件但没有及时调用
close(),可能会造成数据丢失或文件没有保存
利用
with语句,可以自动管理文件的打开和关闭,是推荐的使用方式,例如:
with open('X.txt', 'w') as file:
file.write("hello")file.seek(offset, whence)
此函数用于操纵文件指针到指定位置,以进行读写操作,其中:
offset: 控制指针移动的字节数,正数代表向后移动,负数代表向前移动whence: 控制计算偏移量的基准点,其可取的参数值为:0: 表示从文件的开头开始,为默认值1: 表示从当前位置开始2: 表示从文件的末尾开始
例如下述代码:
with open('X.txt', 'r') as file:
file.seek(10)
data = file.read(5)
print(data)代表打开 X.txt 文件并打印第11~15个字符串
此函数可用于重置化文件的指针 (文件指针只在打开一个文件时会自动重置到文件开头)
file.tell()
此函数用于获取当前指针的位置,在文本模式下返回返回字符数,在二进制模式下返回字节数。故而返回值可能与编码方式有关系
file.read(size=-1)
此函数用于读取文件,
size用于传入从当前位置开始,读取的字节数;默认为 -1,用于表示读取整个文件;读取内容将作为函数的返回值,并且若没有内容可读取,函数将返回空字符串""
读取过程中涉及指针的移动
file.readline(size=-1)
此函数用于按行读取文件,即遇到换行符
\n时即停止读取,并返回包括换行符\n在内的当行内容,其他同file.read()函数
size参数用法同file.read(size=-1)中的size参数
file.readlines(hint=-1)
功能类似
file.read(size=-1),但返回值为列表,其中列表元素为每行的读取内容
truncate(size)
此函数用于将文件大小截断到指定的字节数。
size参数用于传入目标文件的字节数,而后会从文件开头开始,将第size个字节后面的内容截断删除;size为可选参数,不传入size时会将文件截断至当前指针所在处
函数库
bisect
bisect是Python标准库中的一个模块,主要用于对有序表进行二分查找和插入操作,其提供了以下函数:
bisect_left(arr, x, lo=0, hi=len(arr))bisect_right(arr, x, lo=0, hi=len(arr))insort_left(arr, x, lo=0, hi=len(arr))insort_right(arr, x, lo=0, hi=len(arr))
这里 arr 为升序列表, x 为待插入元素,lo、hi 分别为查找的起始和结束位置; bisect_left 和 bisect_right 分别返回左插入与右插入的位置,insort_left 和 insort_right 为直接对有序表进行排序
由于该库只适用于对升序列表进行插入,故而对于降序列表,可通过两次反转结合
bisect的方式实现插入,例如:
import bisect
arr = [9, 7, 5, 3, 1]
sorted_arr = arr[::-1]
bisect.insort_left(sorted_arr, 4)
arr = sorted_arr[::-1]
print(arr) # 输出: [9, 7, 5, 4, 3, 1]time
time是Python标准库中的一个模块,提供了许多用于时间处理的函数,包括测量代码执行时间、获取当前时间、格式化时间等:
time():返回当前时间的时间戳(自1970年1月1日(UTC)以来的秒数)sleep():使程序暂停指定的时间(以秒为单位)。localtime():用以将一个时间戳转换为当前时区的本地时间,若没有输入时间戳,则默认为当前时间,返回struct_time对象gmtime():类似localtime(),不过是将时间戳转换为协调世界时(UTC)mktime():用以将一个struct_time对象转换为时间戳(秒数)struct_time(string, format):用以将一个时间字符串解析为一个struct_time对象,这里string为具有一定格式的时间字符串,如"2025-02-05 13:45:00",format为一个格式化字符串,用来指定如何解析 string 中的日期和时间,常用的格式字符串如下:%Y:四位年份%m:两位月份%d:两位日%H:24小时制的小时%M:分钟%S:秒%a:星期几的缩写%A:星期几的全称%b:月份的缩写%B:月份的全称%I:12小时制的小时%p:AM 或 PM
例如:
import time
time_string = "2025-02-05 13:45:00"
format_string = "%Y-%m-%d %H:%M:%S"
parsed_time = time.strptime(time_string, format_string)
print(parsed_time)perf_counter:返回一个性能计数器的值,用于测量较短时间间隔。它具有更高的精度和可靠性,适用于性能测试和高精度计时。
以及:
import time
time_string = "Mon, 05 Feb 2025 13:45:00"
format_string = "%a, %d %b %Y %H:%M:%S"
parsed_time = time.strptime(time_string, format_string)
print(parsed_time)timeit
timeit是Python标准库中的一个模块,用于测量小段代码的执行时间。其提供了如下的函数:
timeit()用于计算一段代码的执行时间,其基本形式为:timeit.timeit(stmt='pass', setup='pass', number=1000000),这里stmt用以表示要执行的代码片段,setup为测试代码之前需要运行的初始化代码,二者均要求为字符串类型;number用以表示代码要执行的次数
该函数最后将返回执行 stmt 所花费的总时间,并且通过:
import timeit
timeit.timeit(stmt="corner_add_matrix(matrix1,matrix2,0,0)",setup="from __main__ import corner_add_matrix; import torch; matrix1=torch.zeros(4,3); matrix2=torch.tensor([[0,0,1],[0,0,1],[1,1,1],[1,1,1]])", number=10000)也可实现对自定义函数的执行时间的测量
repeat()类似于timeit(),其基本形式为:timeit.repeat(stmt='pass', setup='pass', repeat=3, number=1000000),增加的参数repeat用以控制重复测量的次数
该函数最后将返回一个包含多次测量结果的列表
shutil
shutil是Python标准库中的一个模块,提供了许多高层次的文件操作功能,主要用于文件和目录的管理。其提供了以下的函数:
copy(src, dst):用以将src复制至dst,并返回目标路径。若dst不存在,则新建名为dst的文件;若dst为目录,则将src复制到该目录下并保留原文件名 例如:
import shutil
shutil.copy('Linked list.py', r"optimal solution")会将当前目录下的文件 Linked list.py 复制到当前目录下的文件夹 optimal solution,并返回值'optimal solution\\Linked list.py'
copy2(src, dst):类似于copy(src, dst),但会保留源文件的元数据(例如,修改时间等)。copytree(src, dst):递归地复制整个目录树,从src复制到dst。dst目录必须不存在。move(src, dst):将文件或目录从src移动到dst,如果目标位置存在,源文件或目录会被覆盖。rmtree(path):递归地删除整个目录树,此操作不可恢复make_archive(base_name, format, root_dir, base_dir):用以将指定目录打包成一个压缩文件。这里base_name为压缩文件的输出路径,format为压缩格式,root_dir为源目录,base_dir为要压缩的unpack_archive(filename, extract_dir):用以解压缩文件,这里filename为压缩文件的路径,extract_dir是解压缩的目标目录disk_usage(path):返回给定路径(通常是文件夹)的磁盘使用情况,包括总空间、已用空间和剩余空间。os.makedir(path):递归创建目录,即若父目录不存在,会一并创建
os
os是Python标准库中的一个模块,提供了与操作系统交互的功能,可用来进行文件操作、目录操作、环境变量管理、进程管理等:
rename(src, dst):重命名文件或目录,从src路径更改为dst路径。 例如:
import os
os.rename('old_name.txt', 'new_name.txt')可直接将文件 old_name.txt 重命名为 new_name.txt
import os
os.rename('old_name.txt', '/path/to/new/directory/new_name.txt')可将文件从当前目录移动至 /path/to/new/directory/ 并同时重命名文件 同时 os.rename() 的各错误类型分别为:
FileNotFoundError:源文件或目录不存在,或者路径错误PermissionError:没有足够的权限执行重命名操作,或者文件正在被其他程序使用IsADirectoryError:目标路径是一个目录且目标是文件,或者源路径是目录而目标是文件OSError:一些其他错误(如跨文件系统重命名)
remove(path):删除指定路径的文件。rmdir(path):删除指定路径的空目录,若目录非空会提示OSError错误mkdir(path):创建指定路径的单个目录makedirs(path):创建多层目录。若中间的目录不存在,会自动创建。listdir(path):返回指定目录中的文件和子目录的列表,默认值为当前所在目录path.exists(path):检查指定的路径是否存在path.isdir(path):检查指定路径是否为一个目录path.isfile(path):检查指定路径是否为一个文件environ:一个字典-like 对象,用于访问和修改环境变量。path.join(path1,path2):用以将多个路径连接成一个路径,会自动添加分隔符path.split(path):将路径分为目录部分和文件部分path.abspath(path):返回指定路径的绝对路径path.basename(path):返回路径中的文件名部分path.dirname(path):返回路径中的文件名部分
Pytorch
类型转换
tensor.to(dtype=None, device=None, non_blocking=False, copy=False)
该函数返回一个新的张量,此张量具有指定的数据类型或设备,默认状态下不为强制复制,并且传入的参数均为可选参数:
dtype: 指定转换的目标数据类型,例如torch.float32,torch.int,torch,double等device: 指定要将张量移动到的设备,例如'cpu'或'cuda'(GPU)non-blocking: 若为True,则在将数据从一个设备移动到另一个设备时不会阻塞当前线程copy若为True,则强制复制张量,即无论目标数据与原数据类型是否相同,都新建一个张量副本
张量操作
torch.equal(tensor1, tensor2)
此函数用于比较两个张量是否相等,若他们的形状、和元素值完全相同,则返回
True,否则,将返回False
文件类型
文本编辑类
编码类型
Unicode 字符集
为全球性的字符编码标准,旨在为计算机系统中的每一个字符提供唯一的标识符。通常以
U+开头,后面跟随一个十六进制数,例如U+07FF
同时,Unicode 字符集可划分为:
- 基本多语言平面 (BMP): 即
U+0000至U+FFFF的字符,包含大多数常用字符,如拉丁字母、汉字、阿拉伯字母、标点符号等 - 辅助平面: 即
U+10000至10FFFF的字符
ASCII
仅支持英文字符且每个字符占用一个字节
UTF-8
为一种可变长度的字符编码,兼容
ASCII,可用以编码Unicode,其编码方式为:
- 从
U+0000到U+007F(即ASCII字符),使用一个字节,编码方式与ASCII相同 - 从
U+0080到U+07FF,使用两个字节 - 从
U+0800到U+FFFF,使用三个字节 - 从
U+10000到U+10FFFF,使用四个字节
大多数网页、数据库系统均支持 UTF-8 编码,现代编程语言(如 python Java JavaScript 等) 默认使用 UTF-8 编码
UTF-16
对
Unicode中的 基本多语言平面(BMP),使用两个字节进行表示;对于Unicode中的 辅助平面,使用一对称为“代理对”的共计16位单元进行编码
拜年祭相关
邀请致辞
备选UP
以及一些群内活跃群友们
话题1
转眼之间,自20年6月的 ATRI 发售已然过去了四年半的时间。在这不算短的时间当中,ATRI 陪伴着我们,一同经历了新冠疫情的肆虐、AI技术的普及、黑神话的诞生,以及除此之外的道不尽、数不清的各类纷繁事物。
四年的时间,足以让每个人都改变良多,不知曾经那位稚嫩的少年或少女,如今成长成了什么样子呢?如若有一次同过去对话的机会,大家还能辨认出现在的自己吗?
形形色色的人以自己的方式度过了这四年的时光,千姿百态的大家在这四年中沿着自己的方向体悟着属于着自己的人生。曾经交汇的轨迹再一次发散,奔向各自的远方。
但不知道大家还是否记得在那年夏天,让本应天南海北的我们相聚在一起的那一缕夏日的清凉呢?
是否记得被患肢痛所折磨的夜晚,亚托莉所传递给我们的,让伤痕累累的心归于平静的温暖;是否记得于教室之内,看着沉寂了许久的灯光被大家所点亮之时,所感受到的激动与欣慰;是否记得翻动着的日记从自己颤抖的双手中滑落的瞬间,自己内心的波涛云涌,心跳不止。
是否记得在伊甸所听到的,久久回荡于我们内心而不去的话语;是否记得那场将未来与过去一同揭开的,混杂着泪水的晴日暴雨;是否记得最后在点点星光的点缀之下,映入你我眼中的小镇的灯光。
想知道四年已逝,大家现在又是如何看待小镇上的这段故事的呢?想知道同亚托莉相邂逅的这段时光,对大家来说,又各自意味着什么,大家又各自怀抱着什么样的想法。
话题2
“为什么是现在”,相信这是一个会时常悬于大家每一个人心头之上的疑问——我们总是期盼着能以最好的状态去完成最出彩的事情。因而一旦当事情出现了超乎我们意料的发展,使我们在一开始就陷于一种糟糕的境地,便总是有一种将之暂且搁置,日后再徐徐图之的想法浮现于我们的脑海。
而这样的困境应该也会多多少少地出现于大家进行同人创作的过程之中。参与二创的大家,在下定决心创作些什么的时候,恐怕自己也难以说的上是完全做好了准备。
工作、学习、考试,家庭、同学、朋友,还有太多其他的琐事需要我们去耗费时间与精力,这些细小而又琐碎的事情宛若来自现实的阴雨,不断试图浇灭刚从我们的内心燃起的,创作的火焰。
但即便如此,大家也还是在竭尽所能地坚持着创作,坚持着坚持着,直至作品的诞生。随后大家盘踞于内心的想法也终于得以变成现实,化作有形的作品,让大家切实感受到借由汗水与灵感浇灌出来的,作品的厚重。
也正是因为这样,大家的作品才格外具有意义,但这样的过程也注定了不会一帆风顺,因而想知道大家在创作时所发生的故事。在大家将自己的身心投入于作品进行创作的过程中,究竟经历了什么样的事情,又体悟到了哪些东西呢?
话题3
纵使斗转星移,几度春秋,依然犹在眼前—— ATRI 宣布动画化消息的放出与大家那满怀着期待的心情相互碰撞的刹那,所迸发而出的,激烈的火花。
曾有无数个这样的夜晚,在一个又一个的 ATRI 群聊中,每一个人发自肺腑,畅谈着 ATRI 动画的可能性:有人因 ATRI 背后的 Aniplex 而信心十足,有人因接连的三个 pv 而认为势在必行;有人认为 gal 改难上加难,有人认为既然长久以来杳无音信,那么最后也难免归于沉寂。
混杂着对动画的期待与对出圈的担忧,这样的心情在群内的每一寸角落悄然滋生,并贪婪地生长着。
但终将到来的事情不会因此而提前一刻,注定无缘的事情也不会因此而靠近分毫。最后,ATRI 动画确也如期而至,恰若当时大家不同的人有着各样的观点一般,ATRI 的动画化也给了不同的人以完全不同的感受。
纵使动画化在许多地方饱受争议,但不可否认的是,也是动画化,让这样的一个 IP 又一次地焕发了生机,再一次地走进了大家每一个人的视野
即便动画在诸多的地方都同原作有着较大的出入,难免让从原作一路走来的大家一时间难以接受。但也让我们由此看到了不一样的一段故事与别样的亚托莉。
原作中所传递给我们的,更多的是一种在来自现实的无可奈何直逼眼前的情况之下,抗争到底坚持到最后的不轻易放弃的精神;而在动画中,向我们表达出来的却是身为仿生人的亚托莉,个人所做出来的选择。
不知道对大家而言,ATRI 动画的诞生又意味着什么呢
关于我们的未来
一路走来,真的非常感谢
一片喧闹之中,今年的拜年祭还是迎来了它的终点。屏幕中缓缓升起的"Ending",让人不禁意识到我们的第二届拜年祭,居然已经就这么被画上了一个句号,些许思绪止不住地在内心翻涌:既在感叹时间的流逝,也在感慨这一两年来,和大家之间的回忆竟然已经如此厚重。
依然记得,刚开始提出这个企划那段时间,一位位先前认识而如今却又有几分生疏的群友陆陆续续地加到群里来的情景。那种感觉令人怀念,仿佛一次跨越天南海北的同学会,一种奇妙的羁绊将我们每一个人连结到了一起,在这里共同倾注着各自的热情与心意。
起初,没有人有将我们同“拜年祭”这样的企划联想起来过。最开始的时候,我们只是觉得,在 GINKA 的诞生之年,如果大家能一起折折纸,写下每个人自己的对于未来的那小小展望,该是多么好的一件事情呀;当时光流转,自那个难忘的暑假已经过去三年光阴的时候,大家再一起去重温 ATRI,回顾着令人心生暖意的海边的故事的时候,该是多么浪漫的一次回忆呀——我们企划的名字也是如此诞生的,冬夏凝思——于冬日重拾当年的感动、祭神纸偶——纸片上的心愿
后来,伴随着一位又一位群友的加入
