万年历 购物 网址 日历 小说 | 三峰软件 天天财富 小游戏 视频推荐 小游戏
TxT小说阅读器
↓小说语音阅读,小说下载↓
一键清除系统垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放,产品展示↓
首页  日历2023  日历2024  日历2025  日历知识  | 每日头条  视频推荐  数码知识 两性话题 情感天地 心理咨询 旅游天地 | 明星娱乐 电视剧  职场天地  体育  娱乐 
日历软件  煮酒论史  历史 中国历史 世界历史 春秋战国 三国 唐朝 宋朝 明朝 清朝 哲学 厚黑学 心理学 | 文库大全  文库分类 
电影票房 娱乐圈 娱乐 弱智 火研 中华城市 仙家 六爻 佛门 风水 钓鱼 双色球 戒色 航空母舰 网球 乒乓球 足球 nba 象棋 体操
    
  知识库 -> 数码 -> 现在用台式电脑很丢人吗? -> 正文阅读

[数码]现在用台式电脑很丢人吗?

[收藏本文] 【下载本文】
我父母都是70后,通过他们的打拼也住上了好的房子,赚了不少钱。然后创业肯定是要用电脑的,所以每天我父母都会在三楼工作室工作。但是他们还是不舍得丢那台比…
如果你对一个生产设备的评价标准不是“性能、成本、收益”而是“面子、丢人、落后”。
这说明你是5个50。
别的不多说。
我敢断言,你平时肯定不怎么用电脑。
也不怎么了解电脑。
大学宿舍如果你有一台高配台式电脑。
你玩外星人的室友看到你都得低头。
除了学期末回家的时候。
现在能用台式电脑都是贵族。
如果你想拥有一台台式电脑,那么你必须具备以下条件:
1.稳定的工作
2.稳定的住宅
3.足够的房间空间,
4.足够的钱
综上,你才有资格享受:
1.巨大的屏幕画面
2.散热无忧
3.最舒适的使用电脑姿势
4.最舒适的键盘和设备摆放
5.地表最强机能
台式机的配件:
1.稳定的工作
2.稳定的住所
3.稳定的生活
所以一台精心配置的主机,其实是当代年轻人的奢侈品
我一直有一个老古董的认知。
同时代、同价位的科技产品,一般都是越大性能越好。
上个月被巡视组问话。巡视组的人用笔记本电脑记录。我说一句话,他打字要半天。
我瞅了瞅他,说,你应该弄个键盘的。
他很愤怒的看着我:“是这保密电脑太烂了!”
用台式电脑丢人???开什么国际玩笑
不用台式电脑的原因是什么知道吗?
是因为没足够的条件用台式电脑,只能将就着用用笔记本,平板,手机
就不说别的条件了,光是一个稳定长久的能放下一个书桌加电脑椅的专属独享空间
就这个条件,值多少钱呢?
我住的小区房价4万多一平方
我放台机的电脑桌大约占地2平方
笔记本是高级电脑,台式机是低级电脑
佛跳墙是高级料理,红烧肉是低级料理
刀叉是高级餐具,筷子是低级餐具
这样认知世界的方式确实很省脑子
直接可以把脑子都省了的那种


神威·太湖之光:你说啥?
“三楼工作室工作”
七个字捅了每个观众三刀,已经赢麻了。
确实挺丢人的,朋友们都说我是臭二刺猿呜呜呜


在北上广拥有自己笔记本的年轻人数不胜数........
在北上广拥有自己台式机的年轻人....少得可怜











0
前男友送的机箱……
分手了至今不敢说他一句不好。


另外,我是女的!!!




什么 你们电脑都不住猫猫的么?
是挺丢人的.
我代表月亮,消灭你们!


记住,台式机最重要的零件不是鼠标,也不是CPU,而是自己的房子。
是的,现在主流的台式电脑内存只有16G,非常高端的也只有64G,而最新的苹果手机内存是1TB
人本应该舒服地坐在书桌前,有尊严地享受大屏和全尺寸键盘鼠标带来的愉悦。
其他笔记本和平板之类都是反人类的设计。为的是让人在不舒服的地方也能强行工作,忍受各种因便携而妥协的硬件设计带来的不适感。
好丢人啊,怎么办,要换吗?


一般认为现在(2023年9月13日)用台式电脑很丢人的人,跟之前说外置存储是内存、内存是运存的人,和之前问A15性能是否碾压电脑的人大概率是同样一拨人










网上聊了一个妹子
来我家进了我的卧室
握着我的鼠标说,呀,你的电脑还是台式的啊
我说,嗯
她说,那我们怎么搬到床上看啊
我说,瞧不起谁呢
她说,咋了?
我说,你说得好像有时间看似的
没有良好支撑、没有外接键盘鼠标的笔记本电脑是个人体工学灾难,只适合在外临时用,不适合长期工作用。


而台式电脑更容易达到良好的人体工学,即使是使用老式CRT显示器的时代也是如此


所以如果电脑慢,应当优先考虑升级电脑,而不是换笔记本。下面照片是我曾经的配置,笔记本是国内少见的17寸,后面台式机是两个23寸。


能够常年用台式机基本都是件挺奢侈的事情,说明房间不小,能摆下一张不算小的工作台。用台式机可以获得:
更好的人体工学,包括水平视线内的显示器,更舒服的键盘和鼠标更好的显示设备,大屏幕、多屏幕配置同价格更高的基础硬件配置:更高规格的CPU、内存、硬盘等通常有更快速、稳定的有线网络更丰富的外设接口(通常不少于4个USB接口)
丢人?你要知道按照目前这个趋势发展下去,电脑台式机马上快成奢侈品了
这位先生,你是不是歧视台式电脑?


看到这个问题,我就立马想起了一个曾经的视频,一个男生把他的台式电脑搬到了咖啡厅,然后女仆服务员过去劝阻他,最后经过辩论后女仆服务员把微信给了男生并走开了






男:








































你们歧视台式电脑吗?
用台式电脑丢不丢人不知道,用手提电脑的大概率就是要到处出差加班的打工狗,十分丢人。
像我同学这样大背包背个手提,做个全身推油也要爬起来开手提给领导汇报工作,推油小妹都看不下去,老丢人了
个人认为觉得用台式丢人的话,题主的年龄应该还在上初中,最多高中不能再高了。
主要是年龄小认知比较狭窄,说实话听过用贵的电脑鄙视用便宜的电脑,听说过用新款鄙视旧款的,第一次听说用笔记本鄙视台式机的。
这个认知怎么说呢,特别奇怪。奇怪到莫名其妙。
笔记本和台式机之间怎么产生的鄙视链呢?
至于后落这个说法也完全不成立啊,电脑是计算设备,谁的算力弱谁才是落后的,在笔记本和台式之间,肯定是台式机占优呀。
我猜题主只是想表达,我上边提过的鄙视链之一:“新款鄙视旧款吧,即用旧的东西丢人”。
这个是常见的消费主义陷阱,年轻人很容掉进去,这个正常,我年轻的时候也是有过这么一段,衣服鞋子等等各种用品都要当年新款的……去年的款今年穿就觉得丢人了,其实不这样商家怎么卖更多的东西给你呢?还不是商家的营造的陷阱罢了。
至于,你父母的老电脑现在你看来很卡,但是他们用起来不觉得耽误事,也就是暂时话够用,虽然不缺钱,但是也觉得没必要花这个钱罢了。说实话这个电脑放在家里用,别人也看不见,即便消费主义陷阱,想丢人都丢不了啊,别人不知道啊。
你心目中的台式电脑:


现实中的台式电脑:














确实丢人。
俺也算是您父母一代的, 还在用台式机,
俺耻于告诉别人自己的台式机连机箱都不完整。




俺家也是家境贫寒, 还有两个孩子,
可以说是雪上加霜。
虽然俺家家境贫寒,
但是俺经常教育孩子“人穷不能志短”。因此, 二手笔记本就是咱家的首选。
孩子可以住在俺家的二手房里,用二手笔记本写他的“人工智能”小程序。


这就是俺家初中的孩子自己搞的 CHATGPT 界面:




孩子放假在家没事干, 就像放羊一样令人心焦。
俺给他布置了作业。自己做一个QR CODE 生成器。
这就是他交上来的作业。


授权:WTFPL

##
##  授权:WTFPL
##
from tkinter import *
import tkinter as tk
from PIL import ImageTk, Image
import qrcode as qr

win = tk.Tk()
win.title("QR Code Generator")
win.geometry("600x600")
win.configure(background = "grey")

def get_data():
    data = inputdata.get()
    print('Data = "', data, '"')
    img_data = qr.make(data)
    img_data.save('yourCreatedQR.png')
    show_qr_code()

def show_qr_code():
    frame = Frame(win, width=400, height=400)
    frame.pack()
    frame.place(anchor = 'center', relx=0.5, rely=0.5)
    img = ImageTk.PhotoImage(Image.open("yourCreatedQR.png"))
    label = Label(frame, image = img)
    label.image = img
    label.pack()

tk.Label(win, text="Enter Data to be stored by QR Code").pack()
inputdata = tk.Entry(win, width = 50)
inputdata.pack()

Button(win,text = "Press for your QR Code", command = get_data).pack()

win.mainloop()

ref:

https://www.youtube.com/watch?v=lvjtTjV266Y&t=191s

https://stackoverflow.com/questions/16424091/why-does-tkinter-image-not-show-up-if-created-in-a-function#:~:text=The%20gist%20of%20it%20is,gui%20object%20it%20appears%20on.
https://web.archive.org/web/20201111190625id_/http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm

俺以 50 刀的价钱捡了两台 MACBOOK PRO A1278(2010)。
可以开机使用的, 只不过俺希望小小地升级一下,以便可以再战五年。内存加到 16GB , 硬盘上个 500GB~1TB,跑 VENTURA 没有问题 。跑 python 和 VS CODE 也没有问题 。20 刀买个新电源(安全), 30刀加个 500GB ssd (实用),40刀换电池(安全+方便),30刀换16GB ram(实用)。最后花了, 50 + 20 + 30 + 40 + 30 ~~== 170 刀。
要动手的地方就是拧几个螺丝, 然后替换旧的内存,ssd (原装的太小),电池(寿命到了)。


女儿说很喜欢这个电脑的背光键盘, 对于她完成小学作业很有帮助。
学校和图书馆的很多学习资料还是以 CD 和 DVD 为主。于是俺打算给她用了。反正孩子都是毁机高手。现在的笔记本都没有光驱了, 看不了 DVD 也听不了 CD (学法语)。
170 刀相当于 800~900 人民币。


MACOS 贪吃蛇: 俺家孩子自己弄的 MACOS OPENGL 贪吃蛇 授权 WTFPL


LICENSING: WTFPL 授权

// LICENSING: WTFPL 授权
// for macOS
//#include <gtk/gtk.h>
#include <GL/freeglut.h>
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <gst/gst.h>

#define ACCEL 0.2
#define DECEL 0.93
#define SNAKE_HEAD_SPEED 0.17
#define EAT_RANGE 0.7
#define FOOD_RANGE 36
#define CAMERA_HEIGHT 45
#define CAMERA_DISTANCE 17
#define SIZE_UP 4
#define SIZE_START 6

typedef struct
{
    float x, y, z;
} Vector3;

struct SnakeSegment
{
    Vector3 position;
    Vector3 rotation;
    struct SnakeSegment *next;
};

struct Snake
{
    struct SnakeSegment *head;
};

struct Snake snake;

Vector3 camera_position, camera_rotation, camera_focus;
Vector3 food_position, food_rotation;

time_t t;

bool move_left = FALSE;

int snake_length = 1;

float snake_turn_velocity;
float x_velocity, y_velocity, z_velocity;

void renderCube(GLfloat diffuse[], float x, float y, float z, float rx, float ry, float rz, float size)
{
    glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse);

    glPushMatrix();
    glTranslatef(x, y, z);
    glRotatef(rx, 1, 0, 0);
    glRotatef(ry, 0, 1, 0);
    glRotatef(rz, 0, 0, 1);
    glutSolidCube(size);
    glPopMatrix();
}

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    gluLookAt(
        camera_position.x, camera_position.y, camera_position.z,
        camera_focus.x, camera_focus.y, camera_focus.z,
        0, 1, 0);

    GLfloat red_diffuse[] = {1, 0, 0, 1};
    GLfloat green_diffuse[] = {0, 1, 0, 1};
    GLfloat grey_diffuse[] = {0.4f, 0.4f, 0.4f};
    GLfloat dark_grey_diffuse[] = {0.3f, 0.3f, 0.3f};

    food_rotation.x += 0.8;
    food_rotation.y += 0.8;
    food_rotation.z += 0.8;

    renderCube(red_diffuse, food_position.x, food_position.y, food_position.z, food_rotation.x, food_rotation.y, food_rotation.z, 0.7f);

    struct SnakeSegment *current = snake.head;
    while (current != NULL)
    {
        renderCube(green_diffuse, current->position.x, current->position.y, current->position.z, current->rotation.x, current->rotation.y, current->rotation.z, 1);
        current = current->next;
    }

    renderCube(grey_diffuse, 0, -21, 0, 0, 0, 0, 40);
    renderCube(dark_grey_diffuse, -40, -19, 0, 0, 0, 0, 40);
    renderCube(dark_grey_diffuse, 40, -19, 0, 0, 0, 0, 40);
    renderCube(dark_grey_diffuse, 0, -19, 40, 0, 0, 0, 40);
    renderCube(dark_grey_diffuse, 0, -19, -40, 0, 0, 0, 40);
    renderCube(dark_grey_diffuse, -40, -19, -40, 0, 0, 0, 40);
    renderCube(dark_grey_diffuse, 40, -19, 40, 0, 0, 0, 40);
    renderCube(dark_grey_diffuse, -40, -19, 40, 0, 0, 0, 40);
    renderCube(dark_grey_diffuse, 40, -19, -40, 0, 0, 0, 40);

    glutSwapBuffers();
}

void reshape(int width, int height)
{
    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0, (double)width / (double)height, 1.0, 1000);
}

void addSegment(struct Snake *snake)
{

    struct SnakeSegment *new_segment = (struct SnakeSegment *)malloc(sizeof(struct SnakeSegment));
    if (new_segment == NULL)
    {
        fprintf(stderr, "\n-!!! Memory allocation failed for snake head. !!!-\n");
        exit(1);
    }

    struct SnakeSegment *current = snake->head;
    while (current->next != NULL)
    {
        current = current->next;
    }
    current->next = new_segment;
    new_segment->next = NULL;
}

bool foodEaten()
{
    if (fabs(snake.head->position.x - food_position.x) < EAT_RANGE && fabs(snake.head->position.z - food_position.z) < EAT_RANGE)
    {
        return true;
    }
    return false;
}

void generateFood()
{
    food_position.x = ((rand() % FOOD_RANGE * 1000) / 1000) - FOOD_RANGE / 2;
    food_position.z = ((rand() % FOOD_RANGE * 1000) / 1000) - FOOD_RANGE / 2;

    food_rotation.x = ((rand() % 360 * 1000) / 1000);
    food_rotation.y = ((rand() % 360 * 1000) / 1000);
    food_rotation.z = ((rand() % 360 * 1000) / 1000);
}

Vector3 calculateDirection(Vector3 point_1, Vector3 point_2)
{
    Vector3 vector;
    vector.x = point_2.x - point_1.x;
    vector.y = point_2.y - point_1.y;
    vector.z = point_2.z - point_1.z;

    double magnitude = sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z);

    Vector3 direction;
    direction.x = vector.x / magnitude;
    direction.y = vector.y / magnitude;
    direction.z = vector.z / magnitude;

    return direction;
}

bool Colliding(Vector3 position)
{
    if (position.x < -20 || position.x >= 20 || position.z < -20 || position.z >= 20)
    {
        return true;
    }
    return false;
}

void updateSnakeSegments()
{
    struct SnakeSegment *current = snake.head;
    Vector3 previous_position = snake.head->position;
    Vector3 previous_rotation = snake.head->rotation;

    while (current != NULL)
    {
        // Store the current position and rotation
        Vector3 current_position = current->position;
        Vector3 current_rotation = current->rotation;

        // Update the position and rotation with the previous values
        current->position = previous_position;
        current->rotation = previous_rotation;

        // Update the previous position and rotation variables
        previous_position = current_position;
        previous_rotation = current_rotation;

        // Move to the next segment
        current = current->next;
    }

    // Update the position and rotation of the snake's head
    // snake.head->position.x += SNAKE_HEAD_SPEED * sin(snake.head->rotation.y * M_PI / 180.0f);
    // snake.head->position.z += SNAKE_HEAD_SPEED * cos(snake.head->rotation.y * M_PI / 180.0f);
}

void timer()
{
    if (foodEaten())
    {
        for (int i = 0; i < SIZE_UP; i++)
        {
            addSegment(&snake);
            updateSnakeSegments();
        }

        snake_length++;
        generateFood();
    }

    if (Colliding(snake.head->position))
    {
        exit(1037);
    }

    if (move_left)
    {
        snake_turn_velocity += ACCEL;
    }
    else if (!move_left)
    {
        snake_turn_velocity -= ACCEL;
    }

    snake_turn_velocity *= DECEL;

    snake.head->rotation.y += snake_turn_velocity;

    updateSnakeSegments();

    snake.head->position.x += SNAKE_HEAD_SPEED * sin(snake.head->rotation.y * M_PI / 180.0f);
    snake.head->position.z += SNAKE_HEAD_SPEED * cos(snake.head->rotation.y * M_PI / 180.0f);

    camera_position.x = snake.head->position.x;
    camera_position.y = snake.head->position.y + CAMERA_HEIGHT;
    camera_position.z = snake.head->position.z;

    camera_rotation = calculateDirection(camera_focus, camera_position);

    camera_position.z += CAMERA_DISTANCE * cos(camera_rotation.y * M_PI / 180.0f);

    camera_focus.x += ((snake.head->position.x + food_position.x * 0.7) / 2 - camera_focus.x) / 10;
    camera_focus.y += ((snake.head->position.y + food_position.y * 0.7) / 2 - camera_focus.y) / 10;
    camera_focus.z += ((snake.head->position.z + food_position.z * 0.7) / 2 - camera_focus.z) / 10;

    glutPostRedisplay();
    glutTimerFunc(16, timer, 0);
}

void keyboard(unsigned char key, int x, int y)
{
    printf("yeehaw %d %d\n", x, y);

    switch (key)
    {
    case 'a':
        move_left = TRUE;
        break;
    case 'd':
        move_left = FALSE;
        break;
    default:
        break;
    }
}

void init(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
    glutInitWindowSize(1920, 1080);
    glutCreateWindow("OpenGL 3D Snake Game");

    glEnable(GL_DEPTH_TEST);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glEnable(GL_LIGHT1);

    GLfloat ambient_light[] = {0.9f, 0.9f, 0.9f, 1.0f};
    glLightfv(GL_LIGHT0, GL_AMBIENT, ambient_light);

    GLfloat light_direction[] = {5.0f, 15.0f, 0.0f, 32768.0f};
    glLightfv(GL_LIGHT0, GL_POSITION, light_direction);

    snake.head = (struct SnakeSegment *)malloc(sizeof(struct SnakeSegment));
    snake.head->position.x = 0;
    snake.head->position.y = 0;
    snake.head->position.z = 0;
    snake.head->rotation.x = 0;
    snake.head->rotation.y = 0;
    snake.head->rotation.z = 0;
    snake.head->next = NULL;

    for (int i = 0; i < SIZE_START; i++)
    {
        addSegment(&snake);
        updateSnakeSegments();
    }

    srand((unsigned)time(&t));
    generateFood();
}

int main(int argc, char **argv)
{
    init(argc, argv);

    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutKeyboardFunc(keyboard);
    glutTimerFunc(0, timer, 0);
    glutMainLoop();
    return 0;
}

代码中的变量 snake_turn_velocity 用于控制蛇的转动速度。该变量初始设置为 0,然后根据玩家按下的是 a 键还是 d 键进行递增或递减。蛇转动速度变量会乘以一个减速因子,以防止蛇形转动过快。当蛇的头部更新时,它的旋转速度会随着蛇形旋转速度变量的增加而增加。这将导致蛇按照其当前旋转方向转动。snake_turn_velocity 变量是游戏的重要组成部分,因为它允许玩家控制蛇的移动并避开障碍物。蛇形转弯速度越高,蛇形转弯的速度就越快,但同时也会增加控制难度。较低的蛇行速度会使蛇更容易控制,但也会使蛇更难避开障碍物。


GTK3 AND GSTREAMER1 ALSO WORK WELL

// LICENSING: WTFPL 授权
//
#include <gtk/gtk.h>
#include <gst/gst.h>

static void on_window_closed(GtkWidget* window, gpointer data)
{
    gtk_main_quit();
}


static gboolean on_playback_thread(gpointer data)
{
    GstElement* pipeline;

    GstBus* bus;
    GstMessage* msg;

    // file:///C:/C_GTK/Sevish-nbsp.mp3
    // https://commondatastorage.googleapis.com/codeskulptor-demos/DDR_assets/Sevish_-__nbsp_.mp3
    pipeline = gst_parse_launch("playbin uri=https://commondatastorage.googleapis.com/codeskulptor-demos/DDR_assets/Sevish_-__nbsp_.mp3", NULL);
    // pipeline = gst_parse_launch("playbin uri=file:///C:/C_GTK/Sevish-nbsp.mp3", NULL);
    gst_element_set_state(pipeline, GST_STATE_PLAYING);

    bus = gst_element_get_bus(pipeline);
    msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, (GstMessageType)(GST_MESSAGE_EOS | GST_MESSAGE_ERROR));

    if (msg != NULL) {
        gst_message_unref(msg);
    }

    gst_element_set_state(pipeline, GST_STATE_NULL);
    gst_object_unref(pipeline);

    return G_SOURCE_REMOVE;
}

static void on_button_play_clicked(GtkWidget* button, gpointer data)
{
    GThread* thread;
    thread = g_thread_new("playback_thread", (GThreadFunc)on_playback_thread, NULL);
}



static void on_button_stop_clicked(GtkWidget* button, gpointer data)
{
    GstElement* pipeline;

    pipeline = gst_element_factory_make("playbin", "playbin");
    gst_element_set_state(pipeline, GST_STATE_NULL);
    gst_object_unref(pipeline);
}

int main(int argc, char* argv[])
{
    GtkWidget* window, * label, * box, * play_button, * stop_button;
    GstElement* pipeline;

    /* Initialize GTK+ and GStreamer */
    gtk_init(&argc, &argv);
    gst_init(&argc, &argv);

    /* Create the window */
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Test GTK+3");
    g_signal_connect(window, "destroy", G_CALLBACK(on_window_closed), NULL);

    /* Create the widgets */
    box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 100);
    label = gtk_label_new("What about a song? or music? Hello!");
    play_button = gtk_button_new_with_label("PLAY");
    stop_button = gtk_button_new_with_label("STOP");

    /* Set the button sizes to 30x30 pixels */
    gtk_widget_set_size_request(play_button, 30, 30);
    gtk_widget_set_size_request(stop_button, 30, 30);

    /* Set the font size of the label */
    PangoFontDescription* font_desc = pango_font_description_new();
    pango_font_description_set_size(font_desc, 20 * PANGO_SCALE);
    gtk_widget_override_font(label, font_desc);

    /* Position the widgets */
    gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0);
    GtkWidget* button_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 200);
    gtk_box_pack_end(GTK_BOX(box), button_box, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(button_box), play_button, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(button_box), stop_button, FALSE, FALSE, 0);

    /* Position the buttons */
    gtk_box_pack_end(GTK_BOX(box), button_box, FALSE, FALSE, 100);

    /* Connect the buttons to their respective functions */
    g_signal_connect(play_button, "clicked", G_CALLBACK(on_button_play_clicked), NULL);
    g_signal_connect(stop_button, "clicked", G_CALLBACK(on_button_stop_clicked), NULL);

    /* Show the window and start the main loop */
    gtk_container_add(GTK_CONTAINER(window), box);
    gtk_widget_show_all(window);
    gtk_main();

    return 0;
}









俺一般到二手店淘二手电脑。
最近手痒,而且自我膨胀。
一口气买了十多台大小不一的二手苹果。




python 跨平台多谐波音调发生器可自定义频率幅度和时间带 FFT 及波形显示
授权:WTFPL



## LICENSE: WTFPL
import matplotlib.pyplot as plt
import scipy.fftpack
import numpy as np
import simpleaudio as sa

## %matplotlib inline

lf_sigFreq = 1000.0  # typical 440 Hz
lf_sigAmp = 0.99 # 0 dB
li_fsam = 44100  # 44100 samples per sec
li_durSec = 2  # Duration of li_durSec

# create a List or Array of li_durSec*sample_rate elements, from 0 to li_durSec
li_N =  li_durSec * li_fsam
Lfa_el = np.linspace(0, li_durSec, li_N, False)

t_scope = np.linspace (0, 2/lf_sigFreq, 2*int(li_fsam/lf_sigFreq), False)

# Cal the element value 
lf_toneV =  np.sin(lf_sigFreq * Lfa_el * 2 * np.pi)*0.99 + (np.sin(3 * lf_sigFreq * Lfa_el * 2 * np.pi) )/3 + (np.sin(5 * lf_sigFreq * Lfa_el * 2 * np.pi) )/5 + (np.sin(7 * lf_sigFreq * Lfa_el * 2 * np.pi) )/7 + (np.sin(9 * lf_sigFreq * Lfa_el * 2 * np.pi) )/9 + (np.sin(11 * lf_sigFreq * Lfa_el * 2 * np.pi) )/11 + (np.sin(13 * lf_sigFreq * Lfa_el * 2 * np.pi) )/13 + (np.sin(15 * lf_sigFreq * Lfa_el * 2 * np.pi) )/15 + (np.sin(17 * lf_sigFreq * Lfa_el * 2 * np.pi) )/17

# limit amplitude in 16-bit dynamic range 2^15-1
list_el_buff = lf_sigAmp * lf_toneV *32767/ np.max(np.abs(lf_toneV))
yf = scipy.fftpack.fft(list_el_buff/32767)
# Convert to 16-bit WAVE data format
list_el_buff = list_el_buff.astype(np.int16)

# Play back
play_obj = sa.play_buffer(list_el_buff, 1, 2, li_fsam)

#
# https://stackoverflow.com/questions/34162443/why-do-many-examples-use-fig-ax-plt-subplots-in-matplotlib-pyplot-python
#
xf = np.linspace(0.0, li_fsam/2, li_N//2)

fig, ax = plt.subplots()
## nexttile
ax.plot(xf, 2.0/li_N * np.abs(yf[:li_N//2]))
plt.xlabel('Frequency [Hz]');
plt.ylabel('Amplitude [Peak]')
plt.grid()
# plt.grid()
# plt.show()
## title('Plot 1')



# nexttile
fig, ax = plt.subplots()
##ax.plot( Lfa_el, lf_toneV)
ax.plot( t_scope, lf_toneV[: (t_scope.size )])

#plt.xlabel('Time');
#plt.ylabel('Amplitude')
# title('Plot 2')

plt.grid()
plt.show()

# Wait until done and exit
play_obj.wait_done()





灰尘,
可以用空压机和气枪吹干净。








。。




女儿说很喜欢这个电脑的背光键盘, 对于她完成小学作业很有帮助。












电池鼓包了,
自己换就是了。




电脑这东西够用就行。
除非您真的在研发什么高精尖的玩意。
即使是在研发什么高精尖的玩意,
二手笔记本电脑如果用来写代码也是绰绰有余。
很多人只是在 “玩电脑”而不是在用电脑。你问他/她创造了什么, 也许什么也说不上来......
玩游戏买个二手的 PS3 或者 XBOX360, 也就是 100~200人币的事情。俺家地下室有 10 多台 PS3 和 XBOX360, 都 15~20 刀买的。
至于硬盘,换成SSD 或者换更大的 SSD。希望电脑快一点,换个 SSD 就好了。现在 4TB 才 1000 人币。再把内存加到 64GB, 也是 1000 人民币不到。
电脑就很快了。


如果还嫌不够快, 那就买内存插满所有可以插的槽。
普通的笔记本电脑, 内存也可以加到 64GB, 用起来也是很爽的。
DELL, LENOVO 和 HP 都有相应的机型。
俺没有在调侃。
俺家的电脑, 64GB 是标配。


DELL OptiPlex 3050 Micro


DELL OptiPlex 3050 Micro








“老麦, 大家都说你是‘笑话’、‘论坛孤儿’和‘神棍’。”
“没错。 只有万分之0.5的读者赞同俺的观点。”
。。
[收藏本文] 【下载本文】
   数码 最新文章
为什么大型直升机都是头顶上一个大螺旋桨的
如何评价 龙芯老总胡伟武的爆料:下一代八核
想要入手一款能畅玩市面上所有游戏的游戏本
2024 年扫地机器人有哪些推荐?
iOS的墓碑机制这么厉害,为什么Windows、Li
如何看待华为发布会被指造假?
如何看待华为 Pura 70 系列超高速风驰闪拍功
碎纸机是干嘛用的,撕个纸还要用机器,真是
小米真的是为国为民吗?
华为发布 MatePad 11.5 S 平板电脑,该产品
上一篇文章      下一篇文章      查看所有文章
加:2024-01-15 10:28:39  更:2024-01-15 14:26:08 
 
娱乐生活: 电影票房 娱乐圈 娱乐 弱智 火研 中华城市 印度 仙家 六爻 佛门 风水 古钱币交流专用 钓鱼 双色球 航空母舰 网球 乒乓球 中国女排 足球 nba 中超 跑步 象棋 体操 戒色 上海男科 80后
足球: 曼城 利物浦队 托特纳姆热刺 皇家马德里 尤文图斯 罗马 拉齐奥 米兰 里昂 巴黎圣日尔曼 曼联
  网站联系: qq:121756557 email:121756557@qq.com  知识库