Programming

26392 readers
274 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
1176
 
 

It looks like each instance wants an instance-specific login, but my federated account is searchable, so I should be able to link it. Problem is, I can't figure out how.

Help me, programming.dev

1177
1178
1179
 
 

I wrote a program that turns the feed it receives from your webcam in ASCII art. It's open source: you can find the code on Github.

1180
 
 

I have the following migration:

(Schema::create('user_images',function(Blueprint $table){ $table->id(); $table->binary('image'); $table->unsignedBigInteger('user_id'); $table->foreign('user_id')->references('id')->on('users'); });)

And the following corresponding model:

`class UserImage extends Model { protected $fillable=[ 'image' ];

public function user():BelongsTo{
    return $this->belongsTo(User::class);
}

}`

I am trying to create new UserImage records with UserImage::create but it is always failing, I am sending the image data using curl:

curl -v -F image=@$1 $URL/api/users -H "Accept: application/json"

I have tried so many things but I got different SQL-related errors, I am not sure how am I supposed to encode the image data to get them stored, I know that accessing $request->image returns only a temporary path of the image on the HDD.

1181
1182
 
 

Hi everyone!

I started learning Rust a couple days ago and I'm having fun with it. I'm trying to learn both for fun but also I plan on going back to Uni at the end of this year after roughly 5 years out of education.

I'm trying to think of projects I can do down the line to practice and for fun. Something I really want to build is a full stack web app (I have some basic knowledge of front end.)

Since I'm trying to learn rust, I was thinking of using something like Actix to build the server.

As for database stuff, I was thinking of postgres since that seems very in demand rn!

As for front end, I'm torn between using something like React which I'm somewhat familiar with or trying something like Yew to write it all in Rust!

I mostly would like some feedback on my plan (I understand there aren't many details given, this is mostly an idea a couple months down the line), if i need to change my scope, if theres anything I should change, any resources that might be helpful, or really any advice!

1183
 
 

An article (by me) that presents an opinionated Schemer's opinion on Scheme and its unique philosophy, and what makes Scheme unique above all other languages. It also argues strongly in favor of Scheme's minimalism, and why that's a virtue, not a problem.

In short, what makes Scheme so powerful is its unrivaled nature for building custom embedded languages (which I call algebras), and combining such languages together to produce high level software. I admit this is very similar to Paul Graham's concept of Bottom-up Programming, as presented in his book On Lisp. Only, Scheme does a better job in fulfilling this concept than Common Lisp (hot take).

1184
1185
 
 

First, some context.

I’ve written a program that starts running when I log on and produces data every two seconds. This daemon keeps all the collected data in memory until it gets terminated (usually when I shutdown the system), when it will dump the collected data to a file on disk.

(These are questionable design decisions, I know, but not the point of this post. Though feel free to comment on them, anyway).

I’ve written another program that reads the data file and graphs it. To get the most current data, I can send the USR1 signal to the daemon, which causes it to dump its data immediately. After restarting the renderer, I can analyze the most current data.

The tech (pregnant women and those faint of heart, be warned)

  • The daemon is written in TypeScript and executed through a on-the-fly transpiler in Node.
  • The data file is just a boring JSON dump.
  • systemd is in charge of starting and stopping the daemon
  • The renderer is a static web page served via a python3 server that uses compiled TypeScript to draw pretty lines on the screen via a charting library.
  • All runs on Linux. Mint, to be specific.

As I’m looking for general ideas for my problem, you are free to ignore the specifics of that tech stack and pretend everything was written in Rust.

Now to the question.

I would like to get rid of the manual sending of the signal and refreshing the web page. I would like your opinions on how to go about this. The aim is to start the web server serving the drawing code and have each data point appear as it is generated by the daemon.

My own idea (feel free to ignore)

My first intuition about this was to have the daemon send its data through a Unix pipe. Using a web server, I could then forward these messages through a WebSocket to the renderer frontend. However, it’s not guaranteed that the renderer will ever start, so a lot of messages would queue up in that pipe – if that is even possible; haven’t researched that yet.

I’d need a way for the web server to inform the daemon to start writing its data to a socket, and also a way to stop these messages. How do I do that?

I could include the web server that serves the renderer in the daemon process. That would eliminate the need for IPC. However, I’m not sure if that isn’t too much mixing of concerns. I would like to have the code that produces the data to be as small as possible, so I can be reasonably confident that it’s capable of running in the background for an extended period of time without crashing.

Another way would be to use signals like I did for the dumping of data. The web server could send, for instance, USR2 to make the daemon write its data to a pipe. But This scenario doesn’t scale well – what if I want to deliver different kinds of messages to the daemon? There are only so many signals.

1186
 
 

Hi! Sparrowhub maintainer here. Sparrow is an alternate to Ansible written on Raku. Users can create reusable tasks on many programming languages and run them via Raku SDK scenarios.

If you are interested in contribution, you may:

  • create new Sparrow plugins, it’s easy (no knowledge of Raku is required) so people could use them
  • start using Sparrow as is ( 280 plugins included )
  • contribute in Sparrow core
  • spread the news

Discord channel - https://discord.gg/xpBz6yTj or post your comments, questions here.

1187
 
 

I'm currently working on a project in C where I have a choice between using a library for hash tables or simply creating my own hash table from scratch.

What would look better on a Github portfolio from an employability perspective?

1188
 
 

I’m working through the vulkan tutorial and came across GLFW_TRUE and GLFW_FALSE. I presume there’s a good reason but in looking at the docs it’s just defining 1 and 0, so I’m sorta at a loss as to why some libraries do this (especially in cpp?).

Tangentially related is having things like vk_result which is a struct that stores an enum full of integer codes.

Wouldn’t it be easier to replace these variables with raw int codes or in the case of GLFW just 1 and 0?

Coming mostly from C, and having my caps lock bound to escape for vim, the amount of all caps variables is arduous for my admittedly short fingers.

Anyway hopefully one of you knows why libraries do this thanks!

1189
 
 

This may make some people pull their hair out, but I’d love to hear some arguments. I’ve had the impression that people really don’t like bash, not from here, but just from people I’ve worked with.

There was a task at work where we wanted something that’ll run on a regular basis, and doesn’t do anything complex aside from reading from the database and sending the output to some web API. Pretty common these days.

I can’t think of a simpler scripting language to use than bash. Here are my reasons:

  • Reading from the environment is easy, and so is falling back to some value; just do ${VAR:-fallback}; no need to write another if-statement to check for nullity. Wanna check if a variable’s set to something expected? if [[ <test goes here> ]]; then <handle>; fi
  • Reading from arguments is also straightforward; instead of a import os; os.args[1] in Python, you just do $1.
  • Sending a file via HTTP as part of an application/x-www-form-urlencoded request is super easy with curl. In most programming languages, you’d have to manually open the file, read them into bytes, before putting it into your request for the http library that you need to import. curl already does all that.
  • Need to read from a curl response and it’s JSON? Reach for jq.
  • Instead of having to set up a connection object/instance to your database, give sqlite, psql, duckdb or whichever cli db client a connection string with your query and be on your way.
  • Shipping is… fairly easy? Especially if docker is common in your infrastructure. Pull Ubuntu or debian or alpine, install your dependencies through the package manager, and you’re good to go. If you stay within Linux and don’t have to deal with differences in bash and core utilities between different OSes (looking at you macOS), and assuming you tried to not to do anything too crazy and bring in necessary dependencies in the form of calling them, it should be fairly portable.

Sure, there can be security vulnerability concerns, but you’d still have to deal with the same problems with your Pythons your Rubies etc.

For most bash gotchas, shellcheck does a great job at warning you about them, and telling how to address those gotchas.

There are probably a bunch of other considerations but I can’t think of them off the top of my head, but I’ve addressed a bunch before.

So what’s the dealeo? What am I missing that may not actually be addressable?

1190
 
 

cross-posted from: https://lemmy.ml/post/24744907

I rewrote some popular games for the terminal! You can play 2048, the snake game, tic-tac-toe, connect 4, and many more.

There's still a bunch of games to be made, so feel free to contribute :)

All contributions are welcome!

1191
 
 
1192
1193
 
 

I'm making a language with a lot of inspiration from rust and was experimenting with alternative enum syntax. It relies on literals to be types in order to convey information on the different options.

I don't really get on well with Typescript but having the ability to use literals as types is something I really liked as a lot of the times I use static string literals as errors. and having all the variants upcast through types makes it easier to do pattern matching.

Plain-text transcription of the image:

// using rust like enum syntax
Option<T> (
  | "Some" T
  | "None"
)

fn match_demo() {
  let some_option = Option "Some" "text";
  let none_option = Option "None";

  match some_option {
    "Some" "hello" => print("oh hi there"),
    "Some" text => print("Option is {text}"),
    "None" => print("Option is {text}"),
  }
}

// Or maybe more experimental syntax
Option<T> (
  | T
  | ()
)

fn match_demo2() {
  let opt = Option "something";
  match opt {
    "text" => "matching directly",
    var => "bind to variable",
    () => "nothing",
  }
}
1194
 
 

Weird title, sorry. Let me try and explain.

Goal: Convert simple higher level script into a low level logic gate mess. Basically, I want to build my own custom computers in Factorio with circuit networks. I can easily create any type of logic gate that I want, similar to how computers Minecraft have been built, but with more options.

It would be super nice to code in something similar to Python but have it "compile" into clusters of logic gates. Of course, functionality would be extremely limited, but that is OK and I don't need to boil the ocean.... yet...

(TBH, this sounds really close to what I know about programming FPGAs.)

1195
1196
1197
1198
1199
 
 

Neat article about avoiding a memcpy in a circular buffer.

1200
 
 

cross-posted from: https://lemm.ee/post/52336135

view more: ‹ prev next ›