Zahari Stoyanov

Zahariy Stoyanov (Bulgarian: Захарий Стоянов; archaic: Захарий Стоянов) (1850 – 2 September 1889), born Dzhendo Stoyanov Dzhedev (Bulgarian: Джендо Стоянов Джедев), was a Bulgarian revolutionary, writer, and historian.

Zahariy Stoyanov
Born1850
Medven, near Sliven, Ottoman Empire (present-day Bulgaria)
Died(1889-09-02)2 September 1889

A participant in the April Uprising of 1876, he became its first historiographer with his book Memoirs of the Bulgarian Uprisings.[1] Stoyanov directed the Unification of Bulgaria and Eastern Rumelia in 1885, and was one of the leaders of the People's Liberal Party until the end of his life.

Life

Kosta Panitsa, Zahariy Stoyanov, and Dimitar Rizov in Plovdiv, 1885

Zahariy Stoyanov was born in the family of the shepherd Stoyan Dalakchiev in the village of Medven close to Sliven.[2] He attended the religious school (after 1860 mutual and class school) in his native village between 1856 and 1862 to later become a shepherd in İnceköy (modern Topoli, Varna Province) and Podvis, Burgas Province (1866–1870). While being apprenticed to tailor in Rousse he joined the Rousse revolutionary committee and later worked as a clerk for Baron de Hirsch's railway in modern Simeonovgrad in 1873.

He took part in the Stara Zagora Uprising of 1875 and was one of the "apostles" of the Plovdiv revolutionary district during the time of the April Uprising. After the uprising's suppression he was imprisoned in Plovdiv and later forcibly sent to Medven. He then illegally went to newly liberated Tarnovo in 1877.

After the Liberation of Bulgaria in the Russo-Turkish War of 1877-78 Stoyanov was a member of the Tarnovo Regional Court in 1880. In 1881 he was a secretary of the Court of Appeal and a forensic examining magistrate in Rousse, and he was an employee of the Office of Justice of Eastern Rumelia in 1882–1885.

Monument of Stoaynov in the Borisova garden, Sofia

Stoyanov headed the Bulgarian Secret Central Revolutionary Committee (BSCRC) which organized the Unification of Bulgaria and Eastern Rumelia in 1885.[3] He lived in Sofia since 1886, where he actively participated in the activities of the People's Liberal Party. A deputy to the National Assembly of Bulgaria in 1886, he was an assistant chairman in 1887 and a chairman of the Bulgarian Parliament in 1888–1889. Zahariy Stoyanov died in Paris, France on 2 September 1889.

Literary activity

Stoyanov was the author of a number of articles and feuilletons in several newspapers and under various pseudonyms. He was influenced by the political journalism of Lyuben Karavelov and important Russian journalists. Another sphere he worked in were the memoirs and biographies, describing the April Uprising, the lives of Vasil Levski, Hristo Botev, Georgi Benkovski, and other important Bulgarian revolutionary leaders. His Memoirs of the Bulgarian Uprisings. Eyewitness Reports. 1870–1876 is universally accepted as his best work, the product of many years of labour, facts collection, and rationalization.[4]

Zahari Point on Robert Island, South Shetland Islands, Antarctica is named for Zahariy Stoyanov.

Notes

  1. J. D. B. (1910). "Bulgaria". The Encyclopaedia Britannica; A Dictionary of Arts, Sciences, Literature and General Information. IV (BISHARIN to CALGARY) (11th ed.). Cambridge, England: At the University Press. p. 786. Retrieved 21 June 2018 via Internet Archive.
  2. Potter, M. W. (1913). "Zachary Stoyanoff: Introduction". Zachary Stoyanoff: Pages from the Autobiography of a Bulgarian Insurgent. Translated by Potter, M.W. London: Edward Arnold. p. 4. Retrieved 21 June 2018 via Internet Archive.
  3. J. D. B. (1910). "Bulgaria (Union with Eastern Rumelia)". The Encyclopaedia Britannica; A Dictionary of Arts, Sciences, Literature and General Information. IV (BISHARIN to CALGARY) (11th ed.). Cambridge, England: At the University Press. p. 783. Retrieved 15 July 2018 via Internet Archive.
  4. Stoyanoff, Zachary (1913). Pages from the Autobiography of a Bulgarian Insurgent. Translated by Potter, M.W. London: Edward Arnold. Retrieved 15 July 2018 via Internet Archive.
gollark: So, I finished that to highly dubious demand. I'd like to know how #11 and such work.
gollark: > `x = _(int(0, e), int(e, е))`You may note that this would produce slices of 0 size. However, one of the `e`s is a homoglyph; it contains `2 * e`.`return Result[0][0], x, m@set({int(e, 0), int(е, e)}), w`From this, it's fairly obvious what `strassen` *really* does - partition `m1` into 4 block matrices of half (rounded up to the nearest power of 2) size.> `E = typing(lookup[2])`I forgot what this is meant to contain. It probably isn't important.> `def exponentiate(m1, m2):`This is the actual multiplication bit.> `if m1.n == 1: return Mаtrix([[m1.bigData[0] * m2.bigData[0]]])`Recursion base case. 1-sized matrices are merely multiplied scalarly.> `aa, ab, ac, ad = strassen(m1)`> `аa, аb, аc, аd = strassen(m2)`More use of homoglyph confusion here. The matrices are quartered.> `m = m1.subtract(exponentiate(aa, аa) ** exponentiate(ab, аc), exponentiate(aa, аb) ** exponentiate(ab, аd), exponentiate(ac, аa) ** exponentiate(ad, аc), exponentiate(ac, аb) ** exponentiate(ad, аd)) @ [-0j, int.abs(m2.n * 3, m1.n)]`This does matrix multiplication in an inefficient *recursive* way; the Strassen algorithm could save one of eight multiplications here, which is more efficient (on big matrices). It also removes the zero padding.> `m = exponentiate(Mаtrix(m1), Mаtrix(m2)) @ (0j * math.sin(math.asin(math.sin(math.asin(math.sin(math.e))))), int(len(m1), len(m1)))`This multiples them and I think also removes the zero padding again, as we want it to be really very removed.> `i += 1`This was added as a counter used to ensure that it was usably performant during development.> `math.factorial = math.sinh`Unfortunately, Python's factorial function has really rather restrictive size limits.> `for row in range(m.n):`This converts back into the 2D array format.> `for performance in sorted(dir(gc)): getattr(gc, performance)()`Do random fun things to the GC.
gollark: > `globals()[Row + Row] = random.randint(*sys.version_info[:2])`Never actually got used anywhere.> `ε = sys.float_info.epsilon`Also not used. I just like epsilons.> `def __exit__(self, _, _________, _______):`This is also empty, because cleaning up the `_` global would be silly. It'll be overwritten anyway. This does serve a purpose, however, and not just in making it usable as a context manager. This actually swallows all errors, which is used in some places.> `def __pow__(self, m2):`As ever, this is not actual exponentiation. `for i, (ι, 𐌉) in enumerate(zip(self.bigData, m2.bigData)): e.bigData[i] = ι + 𐌉` is in fact just plain and simple addition of two matrices.> `def subtract(forth, 𝕒, polynomial, c, vector_space):`This just merges 4 submatrices back into one matrix.> `with out as out, out, forth:`Apart from capturing the exceptions, this doesn't really do much either. The `_` provided by the context manager is not used.> `_(0j, int(0, 𝕒.n))`Yes, it's used in this line. However, this doesn't actually have any effect whatsoever on the execution of this. So I ignore it. It was merely a distraction.> `with Mаtrix(ℤ(ℤ(4))):`It is used again to swallow exceptions. After this is just some fluff again.> `def strassen(m, x= 3.1415935258989):`This is an interesting part. Despite being called `strassen`, it does not actually implement the Strassen algorithm, which is a somewhat more efficient way to multiply matrices than the naive way used in - as far as I can tell - every entry.> `e = 2 ** (math.ceil(math.log2(m.n)) - 1)`This gets the next power of two in a fairly obvious way. It is used to pad out the matrix to the next power of 2 size.> `with m:`The context manager is used again for nicer lookups.> `Result[0] += [_(0j, int(e, e))]`Weird pythonoquirkiness again. You can append to lists in tuples with `+=`, but it throws an exception as they're sort of immutable.> `typing(lookup[4])(input())`It's entirely possible that this does things.
gollark: > `def __eq__(self, xy): return self.bigData[math.floor(xy.real * self.n + xy.imag)]`This actually gets indices into the matrix. I named it badly for accursedness. It uses complex number coordinates.> `def __matmul__(self, ǫ):`*This* function gets a 2D "slice" of the matrix between the specified coordinates. > `for (fοr, k), (b, р), (whіle, namedtuple) in itertools.product(I(*int.ℝ(start, end)), enumerate(range(ℤ(start.imag), math.floor(end.imag))), (ǫ, ǫ)):`This is really just bizarre obfuscation for the basic "go through every X/Y in the slice" thing.> `out[b * 1j + fοr] = 0`In case the matrix is too big, just pad it with zeros.> `except ZeroDivisionError:`In case of zero divisions, which cannot actually *happen*, we replace 0 with 1 except this doesn't actually work.> `import hashlib`As ever, we need hashlib.> `memmove(id(0), id(1), 27)`It *particularly* doesn't work because we never imported this name.> `def __setitem__(octonion, self, v):`This sets either slices or single items of the matrix. I would have made it use a cool™️ operator, but this has three parameters, unlike the other ones. It's possible that I could have created a temporary "thing setting handle" or something like that and used two operators, but I didn't.> `octonion[sedenion(malloc, entry, 20290, 15356, 44155, 30815, 37242, 61770, 64291, 20834, 47111, 326, 11094, 37556, 28513, 11322)] = v == int(bool, b)`Set each element in the slice. The sharp-eyed may wonder where `sedenion` comes from.> `"""`> `for testing`> `def __repr__(m):`This was genuinely for testing, although the implementation here was more advanced.> `def __enter__(The_Matrix: 2):`This allows use of `Matrix` objects as context managers.> `globals()[f"""_"""] = lambda h, Ĥ: The_Matrix@(h,Ĥ)`This puts the matrix slicing thing into a convenient function accessible globally (as long as the context manager is running). This is used a bit below.
gollark: * desired

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.