Gopher Academy
3.34K subscribers
918 photos
40 videos
279 files
1.99K links
🕸 Gopher Academy

🔷interview golang
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
What is it Pitfalls in software engineering?

In software engineering, a pitfall refers to a common mistake or problem that developers may encounter during the development process. These pitfalls can lead to issues such as increased development time, poor code quality, difficult maintenance, or reduced performance. Being aware of these pitfalls can help developers avoid them and create better software.

Here are some common pitfalls in software engineering:

1. Insufficient planning and requirements analysis: Skipping or rushing through the planning and requirements gathering phase can lead to misaligned expectations, feature creep, and wasted development effort.

2. Poor communication: Inadequate communication among team members, stakeholders, or clients can lead to misunderstandings, incorrect implementation, and project delays.

3. Ignoring best practices: Neglecting established best practices, such as coding standards, design patterns, and architectural principles, can result in code that is difficult to understand, maintain, and scale.

4. Lack of testing: Failing to implement proper testing procedures can lead to undetected bugs and issues in the software, which can result in poor user experiences and increased maintenance costs.

5. Not handling errors and exceptions: Ignoring or improperly handling errors and exceptions can cause software to fail unexpectedly and make it difficult to diagnose and fix issues.

6. Over-engineering: Implementing overly complex solutions or adding unnecessary features can make the software harder to maintain and understand, and can increase the risk of bugs.

7. Tight coupling: Writing code with high levels of dependency between components can make it harder to modify, extend, or reuse parts of the software.

8. Not considering performance: Focusing solely on functionality without considering the performance implications can lead to software that runs slowly or consumes excessive resources.

9. Ignoring user feedback: Neglecting user feedback during the development process can result in software that does not meet user needs or is difficult to use.

10. Inadequate documentation: Failing to create and maintain proper documentation can make it difficult for developers to understand and maintain the software, especially as the team grows or changes.

By being aware of these common pitfalls, software engineers can take proactive steps to avoid them and create higher-quality software that meets the needs of users and stakeholders. It is important to continuously learn from past experiences, share knowledge with team members, and stay up-to-date with best practices to minimize the impact of these pitfalls on your software projects.


🕊 @gopher_academy
👍7👏2🗿1
When choosing a database engine for your software project? type of database engine?

1. SQL (Relational) Databases:
- Structured data model with a schema: Relational databases use tables with predefined columns and relationships between tables, making them suitable for structured data.
- ACID transactions: SQL databases provide strong consistency guarantees with Atomicity, Consistency, Isolation, and Durability (ACID) properties.
- Powerful query language: SQL allows for complex queries and data manipulations.
- Wide adoption and ecosystem: SQL databases have been around for a long time and have a mature ecosystem with numerous tools, libraries, and resources.

Examples: PostgreSQL, MySQL, Microsoft SQL Server, Oracle Database

2. NoSQL Databases:
- Flexible data model: NoSQL databases do not require a predefined schema, allowing for greater flexibility in data organization. They can handle unstructured or semi-structured data.
- Scalability: NoSQL databases are typically designed to scale horizontally, making them a good choice for large-scale, distributed systems.
- Varied data storage models: NoSQL databases encompass several data models, such as key-value, document, column-family, and graph, which can be more suitable for specific use cases.

Examples: MongoDB (Document), Cassandra (Column-family), Redis (Key-value), Neo4j (Graph)

3. Time Series Databases:
- Time-based data: Time series databases are designed for handling time-stamped data, such as sensor readings, stock prices, or server metrics.
- High write and query performance: These databases are optimized for ingesting large volumes of time-based data and querying it efficiently.
- Data aggregation and downsampling: Time series databases often provide built-in functions for aggregating and downsampling data, which is useful for analyzing trends over time.

Examples: InfluxDB, TimescaleDB, OpenTSDB

4. NewSQL Databases:
- Combination of SQL and NoSQL: NewSQL databases aim to combine the benefits of relational databases (ACID transactions, SQL query language) with the scalability and performance of NoSQL databases.
- Distributed architecture: NewSQL databases are designed for distributed environments, providing high availability and fault tolerance.

Examples: CockroachDB, Google Spanner, TiDB

When choosing a database engine, consider the following factors:

- Data model and schema flexibility
- Query patterns and access requirements
- Consistency and transaction guarantees
- Scalability and performance needs
- Operational complexity and management

Evaluate your project's specific requirements and use cases to determine the best database engine for your needs. It's also worth noting that some projects may benefit from using a combination of database engines to address different aspects of the application.


🕊 @gopher_academy
🔥4🤔3👍2👏1
List of relations in SQL and NOSQL database

1. One-to-One (1:1):
- SQL: Use a foreign key constraint in one table referencing the primary key of another table.
- NoSQL: Embed the related document within the parent document (e.g., in MongoDB) or store the related key-value pair in the same record (e.g., in a column-family database like Cassandra).

2. One-to-Many (1:N):
- SQL: Use a foreign key constraint in the child table referencing the primary key of the parent table.
- NoSQL: Embed the child documents within the parent document (e.g., in MongoDB) or store the related key-value pairs in the same record (e.g., in a column-family database like Cassandra).

3. Many-to-One (N:1):
- SQL: Similar to one-to-many, use a foreign key constraint in the child table referencing the primary key of the parent table.
- NoSQL: Store a reference to the parent document in the child document (e.g., in MongoDB) or store the parent key in the child record (e.g., in a column-family database like Cassandra).

4. Many-to-Many (N:M):
- SQL: Create a junction table with foreign key constraints referencing the primary keys of both related tables.
- NoSQL: Store an array of references to the related documents in each document (e.g., in MongoDB) or store the related keys in a separate record (e.g., in a column-family database like Cassandra).

5. Self-referencing (recursive):
- SQL: Use a foreign key constraint in the table referencing its own primary key.
- NoSQL: Embed the related documents within the same document (e.g., in MongoDB) or store the related key-value pairs in the same record (e.g., in a column-family database like Cassandra).

6. Hierarchical:
- SQL: Use a foreign key constraint in the table referencing its own primary key (similar to self-referencing) or use a closure table to represent the hierarchy.
- NoSQL: Use a recursive document embedding (e.g., in MongoDB) or a recursive key-value storage (e.g., in a column-family database like Cassandra).

7. Graph relationships:
- SQL: Model graph relationships using adjacency lists, path enumeration, or closure tables.
- NoSQL: Use a dedicated graph database (e.g., Neo4j) or store the relationships as edges in a document or column-family database (e.g., MongoDB or Cassandra).


🕊 @gopher_academy
🔥5👍2👏1🤣1
🔵Waiting for go1.21: Execution Tracing with < 1% Overhead

🟢https://blog.felixge.de/waiting-for-go1-21-execution-tracing-with-less-than-one-percent-overhead/


🕊 @gopher_academy
👏2👍1🍾1
🔵go review google source

🟢https://go-review.googlesource.com/


🕊 @gopher_academy
👍1🔥1💊1
🔵FlameScope for Go

🟢Learn how to visualize CPU samples from Go execution traces with FlameScope.

🔴https://blog.felixge.de/flamescope-for-go/


🕊 @gopher_academy
👍2🔥1
🔵8 Unexpected Profiling Use Cases Beyond Performance Optimization

🔻Detect Workload Shifts
🔻Detect Data Nesting
🔻Detect Dead Code
🔻Debug Unresponsiveness
🔻Debug Errors
🔻Verify Deployments
🔻Improve Maintainability
🔻Faster Onboarding

🟢https://blog.felixge.de/8-unexpected-profiling-use-cases-beyond-performance-optimization/


🕊 @gopher_academy
👍3
🎉 Go 1.20.6 and 1.19.11 are released!

🔐 Security: Includes security fixes for CVE-2023-29406 and Go issue go.dev/issue/60374

📢 Announcement: https://groups.google.com/g/golang-announce/c/2q13H6LEEx0

📦 Download: go.dev/dl/#go1.20.6


🕊 @gopher_academy
🎉1🍌1🍾1🗿1
درود دوستان ،تیم ما در حال ارزیابی و انجام تحقیقات روی یه پروژه در حوزه سینما هست؛
ممنون میشیم چند دقیقه از وقتتون رو بذارید و این پرسشنامه رو تکمیل کنید 😊💙

🔰 yun.ir/or5em


🕊 @gopher_academy
👏4👍3👎32🕊2
Evolution of an api architecture

🕊 @gopher_academy
👍13🤔1
MVC,MVP,MVVM,VIPER

🕊 @gopher_academy
👍11
Govulncheck v1.0.0 is released!

Govulncheck is a command-line tool that helps Go users find known vulnerabilities in their project dependencies. The tool can analyze both codebases and binaries, and it reduces noise by prioritizing vulnerabilities in functions that your code is actually calling.

https://go.dev/blog/govulncheck


🕊 @gopher_academy
👍8
1689226707369.pdf
138.5 KB
Learn How to Write Better Git Commit Messages

#github

🕊 @gopher_academy
4🎉3
🎉 Go 1.21 Release Candidate 3 is released!

🏃‍♂️ Run it in dev! Run it in prod! File bugs! go.dev/issue/new

🗣 Announcement: https://groups.google.com/g/golang-announce/c/5golCy-_yK0

📦 Download: go.dev/dl/#go1.21rc3


🕊 @gopher_academy
🍾2🕊1
ماکروسافت به جایگزین کردن کدهای هسته ویندوز با Rust ادامه میده. به نظر میرسه در چند سال آینده قرار ویندوز تبدیل بشه به یکی از امن ترین سیستم عامل های موجود!
نکته مهمتر اینکه Rust هزینه توسعه سیستم عامل در دراز مدت بسیار پایین میاره و این یعنی توسعه سریعتر

https://www.itpro.com/software/windows/microsoft-continues-its-rust-mission-with-new-kernel-features

#DevTwitter | <Rust راه/>

🕊 @gopher_academy
👍13💊2🕊1
این سایت مجموعه ای از سوالات SQL ای داره که روی یه دیتابیس از پیش ساخته شده سوال میپرسه و دارای بخش‌های مختلفیه که قسمت‌های مختلف SQL رو ازتون تست میگیری و میتونین عملی باهاش SQL رو یاد بگیرید.

https://pgexercises.com


🕊 @gopher_academy
👍12
REST VS GraphQL

🕊 @gopher_academy
👍113👎2
👋👀یه پلی لیست واسه یادگیری صفرتاصد گولنگ
https://www.youtube.com/playlist?list=PLoILbKo9rG3skRCj37Kn5Zj803hhiuRK6

🕊 @gopher_academy
👍103🕊1🍓1🍾1
Jwt

🕊 @gopher_academy
👍8🍾4💊1
😂😀😆😃😅

🕊 @gopher_academy
🤣17👍2
📥 دریافت شده از: Amir mohammad Mastali
-------------

💢مصاحبه مدیر منابع انسانی گوگل:

ما در #گوگل به ۲ شکل زیر نیروها را حفظ می‌کنیم:

لزلو بک، مدیر ارشد منابع انسانی گوگل می‌گوید، "کارکنان برای پول نمی مانند."

‼️فقط حدود یک سوم از 100 کارمند اول گوگل هنوز در این شرکت مشغول به کار هستند، با وجود اینکه در اینجا با پارو پول جمع می‌کردند.

به گفته بك، افراد به دو دلیل در شغل خود می مانند.

⭕️1.کیفیت افرادی که با آنها کار می کنند.

"به همین دلیل است که #جذب و #استخدام بسیار مهم است." گوگل استانداردهای بالایی را برای هر کسی که استخدام می‌کند، تعیین می‌کند.

⭕️ 2 .احساس اینکه کاری که انجام می‌دهند معنی دار است.

کارکنان چیزی بیش از درآمد از کارشان می‌خواهند.
آنها می‌خواهند کاری را انجام دهند که با معنی باشد. به علاوه، حسِ هدف دار بودن، مزایایی بیش از نگهداشت نیرو دارد. مطالعات، نشان می‌دهد زمانی که افراد قادر به ارتباط دادن  شغل خود به چیزی معنی دار هستند، بهره وری آنها تا پنج برابر افزایش می‌یابد.

نتیجه: با هدف گذاری و تعریف برخی از اهداف برای کارکنان می‌توانیم به کار افراد معنی و مفهوم ببخشیم. کارکنانی که برای رسیدن به هدف خاصی تلاش نکنند و دچار روزمرگی شده باشند در کار خود احساس خوبی ندارند.

پی نوشت: بنظرم با توجه به شرایط در حال حاضر  اقتصادی کشور، هنوز هم نگهداشت پرسنل با کیفیت با حقوق بالا میسر نیست.

#منابع_انسانی
#سرمایه_انسانی
#انگیزه
#نگهداشت
#مدیریت


🕊 @gopher_academy
👍15